16路数显报警器.docx

上传人:b****3 文档编号:6651810 上传时间:2023-05-10 格式:DOCX 页数:12 大小:579.21KB
下载 相关 举报
16路数显报警器.docx_第1页
第1页 / 共12页
16路数显报警器.docx_第2页
第2页 / 共12页
16路数显报警器.docx_第3页
第3页 / 共12页
16路数显报警器.docx_第4页
第4页 / 共12页
16路数显报警器.docx_第5页
第5页 / 共12页
16路数显报警器.docx_第6页
第6页 / 共12页
16路数显报警器.docx_第7页
第7页 / 共12页
16路数显报警器.docx_第8页
第8页 / 共12页
16路数显报警器.docx_第9页
第9页 / 共12页
16路数显报警器.docx_第10页
第10页 / 共12页
16路数显报警器.docx_第11页
第11页 / 共12页
16路数显报警器.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

16路数显报警器.docx

《16路数显报警器.docx》由会员分享,可在线阅读,更多相关《16路数显报警器.docx(12页珍藏版)》请在冰点文库上搜索。

16路数显报警器.docx

16路数显报警器

 

EDA技术课程项目设计报告

2011 -2012 学年 第 二 学期

项目名称:

 十六路数显示报警器

所属课程:

 电子产品开发与设计

 

班    级:

 电子10A1

姓    名:

侯树辰

邱阳

指导老 师:

 张亚

 

摘要:

…………………………………………………………2

引言:

…………………………………………………………3

一、题目分析与设计:

………………………………………4

二、VHDL程序设计:

…………………………………………8

三、波形仿真图:

……………………………………………12

四、管脚锁定:

………………………………………………13

五、心得体会:

………………………………………………14

参考文献:

……………………………………………………15

摘要与引言

摘要

现代生活中,数字电路产品与我们接触的是越来越平凡了,包括计算机、电子表、智能仪器表及其它很多领域中,它给我们带来的不仅是工作上的方便,而且也给我们的生活娱乐添滋加彩。

这次EDA课程设计中,我做的是路数显示报警器,基于设计要求,本文主要是VHDL语言着手。

首先简单介绍一下EDA、VHDL等的有关知识,其次介绍了一下设计要求和我的设计构想,再运用VHDL语言特点,写出程序代码,最后是一些心得体会、报警器的原理结构图和用MAX+PLUSII软件仿真的结果部分图附录等部分。

引言

数字电路主要是基于两个信号(我们可以简单的说是有电压和无电压),用数字信号完成对数字量进行算术运算和逻辑运算的电路我们称之为数字电路,它具有逻辑运算和逻辑处理等功能,数字电路可分为组合逻辑电路和时序逻辑电路。

1EDA简介

EDA(ElectronicsDesignAutomation)技术是随着集成电路和计算机技术的飞速发展应运而生的一种高级、快速、有效的电子设计自动化工具。

它是为解决自动控制系统设计而提出的,从70年代经历了计算机辅助设计(CAD),计算机辅助工程(CAE),电子系统设计自动化(ESDA)3个阶段。

前两个阶段的EDA产品都只是个别或部分的解决了电子产品设计中的工程问题;第三代EDA工具根据工程设计中的瓶颈和矛盾对设计数据库实现了统一管理,并提出了并行设计环境概念,提供了独立于工艺和厂家的系统级的设计工具。

EDA关键技术之一就是采用硬件描述语言对硬件电路进行描述,且具有系统级仿真和综合能力。

目前应用比较广泛的硬件描述语言就是VHDL。

 

第一章题目分析与设计

1设计要求

(1)设计16路数显报警器,16路中某一断开时(可用高低电平表示断开和接通),用十进制数显示该路编号,并发出声音信号;

(2)报警时间持续10秒;

(3)当多路报警时,具有优先级,并降低优先级的报警存储,处理完成(手动拨为0)高优先级报警后,再处理之。

(4)在动态数码管上显示路数;

(5)用16个拨码开关控制16路;

(6)用蜂鸣器发出蜂鸣。

2设计方案

本设计是一个具有优先级的定时报警系统。

整个系统由三部分构成:

信号输入模块,报警器模块,动态LED显示模块。

信号输入模块对输入信号作出响应,输出此时优先级最高的断开路线号,该路线号经过7段译码后送入数码管显示输出。

同时控制模块还输出错误信号,报警器在收到错误信号后产生一个长为10秒的脉冲,驱动后续的扬声器电路发出警报。

连续发生的错误并不会导致报警时间延长,只有当所有故障被排除后,报警器模块才会复位。

同时2位数码管显示的总是此时优先级最高的断开路线号,如果无故障发生,数码管显示00。

下图是整个电路的设计原理图。

3模块介绍

(1)信号输入模块

此模块共有16个拨码开关作为输入信号,用S1~S16表示,当开关无输入时,都处于低电平状态,当有一路断开时,会产生一个WARNING的输出信号,并使其值为一,以作为报警器模块的高电平鉴别信号。

同时,当开关有输入时,会产生一个六位的二进制输出信号num,此信号表示动作的开关序号,它是作为动态显示模块的输入信号。

原理结构图如下:

(2)报警模块

报警模块共有两个输入信号WARNING和CLK,一个输出信号ALARM。

当从信号输入模块检测到有开关输入时,WARNING信号已置1,CLK上升沿到来时,有程序将ALARM置1,蜂鸣器发出报警信号,并且进入一个10秒的循环周期,时间到达后,跳出循环,蜂鸣器停止报警。

原理结构图如下:

(3)数码管显示模块

这个模块有两个输入信号和两个输出信号。

其中一个是信号输入模块的输出num作为输入,设为N【4:

0】,另外一个是时钟输入端,作为扫描数码管的频率信号,采用1024HZ的中高频信号。

输出信号为SS0、SS1、SS2,是动态数码管的片选段,当其为111时选中7管,为110时,选中6管。

另外一个输出为O,显示动作开关的序号。

时钟信号交替的选中6、7两个管子,从而实现数码显示的功能。

原理结构图如下:

(4)顶层模块

顶层模块的作用是将各个模块组合到一起,从而实现最终的功能。

其输入即为各个模块的输入,两个时钟信号,还有16个拨码开关的输入,其输出为数码管显示和报警器。

原理结构图如下:

 

第二章VHDL程序设计

VHDL设计源程序为:

(1)信号输入模块

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

entitykongis

PORT(k:

INSTD_LOGIC_vector(15downto0);

w:

OUTSTD_LOGIC;

m:

outstd_logic_vector(3downto0);

n:

outstd_logic_vector(3downto0));

end;

architectureoneofkongis

begin

process(k)

begin

if(k="1111111111111111")then

w<='0';m<="0000";n<="0000";

elsif(k="1111111111111110")then

w<='1';m<="0001";n<="0000";

elsif(k="1111111111111101")then

w<='1';m<="0010";n<="0000";

elsif(k="1111111111111011")then

w<='1';m<="0011";n<="0000";

elsif(k="1111111111110111")then

w<='1';m<="0100";n<="0000";

elsif(k="1111111111101111")then

w<='1';m<="0101";n<="0000";

elsif(k="1111111111011111")then

w<='1';m<="0110";n<="0000";

elsif(k="1111111110111111")then

w<='1';m<="0111";n<="0000";

elsif(k="1111111101111111")then

w<='1';m<="1000";n<="0000";

elsif(k="1111111011111111")then

w<='1';m<="1001";n<="0000";

elsif(k="1111110111111111")then

w<='1';m<="0001";n<="0001";

elsif(k="1111101111111111")then

w<='1';m<="0010";n<="0001";

elsif(k="1111011111111111")then

w<='1';m<="0011";n<="0001";

elsif(k="1110111111111111")then

w<='1';m<="0100";n<="0001";

elsif(k="1101111111111111")then

w<='1';m<="0101";n<="0001";

elsif(k="1011111111111111")then

w<='1';m<="0110";n<="0001";

elsif(k="0111111111111111")then

w<='1';m<="1000";n<="0001";

elsew<='0';

endif;

endprocess;

end;

(2)选择模块

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYMUX21IS

PORT(A:

INSTD_LOGIC_vector(3downto0);

B:

INSTD_LOGIC_vector(3downto0);

S:

INSTD_LOGIC_vector(1downto0);

D:

OUTSTD_LOGIC_vector(3downto0)

);

end;

ARCHITECTUREONEOFMUX21IS

BEGIN

PROCESS(A,B,S)

BEGIN

IFS<="00"THEN

D<=A;

ELSIFS<="01"THEN

D<=B;

ENDIF;

ENDPROCESS;

ENDONE;

(3)数码管显示模块

libraryieee;

useieee.std_logic_1164.all;

entitybcdis

port(A:

instd_logic_vector(3downto0);

led:

outstd_logic_vector(6downto0));

endbcd;

architectureBHVofbcdis

begin

process(A)

begin

caseAis--GFEDCBA

when"0000"=>led<="0111111";

when"0001"=>led<="0000110";

when"0010"=>led<="1011011";

when"0011"=>led<="1001111";

when"0100"=>led<="1100110";

when"0101"=>led<="1101101";

when"0110"=>led<="1111101";

when"0111"=>led<="0000111";

when"1000"=>led<="1111111";

when"1001"=>led<="1101111";

whenothers=>led<="0000000";

endcase;

endprocess;

endBHV;

(4)动态扫描模块

libraryIEEE;

useIEEE.std_logic_1164.all;

useIEEE.std_logic_unsigned.all;

entityjingbaois

port(CLK,w:

inSTD_LOGIC;

a:

outSTD_LOGIC);

endjingbao;

architectureoneofjingbaois

signalt:

STD_LOGIC_VECTOR(3downto0):

="1010";

begin

process(CLK,w)

begin

if(CLK'eventandCLK='1')then

ifw='1'then

a<='1';t<=t-1;

elsea<='0';

endif;

endif;

endprocess;

end;

(5)1000分频模块

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYFEN1000IS

PORT(CLK:

INSTD_LOGIC;

Q:

OUTSTD_LOGIC);

ENDFEN1000;

ARCHITECTUREoneOFFEN1000IS

SIGNALA:

STD_LOGIC;

BEGIN

PROCESS(CLK)

VARIABLECOUNT:

INTEGERRANGE0TO499;

BEGIN

IF(CLK'EVENTANDCLK='1')THEN

IF(COUNT=499)THEN

COUNT:

=0;

A<=NOTA;

ELSE

COUNT:

=COUNT+1;

ENDIF;

ENDIF;

Q<=A;

ENDPROCESS;

ENDONE;

第三章波形仿真图

一.输入模块波形仿真图

二.报警模块波形仿真图

(3)数码管显示模块

 

第四章管脚锁定

管脚锁定及连线情况:

alarm>chip=top;OutputPin=116

CLK>chip=top;InputPin=55

Q0>chip=top;OutputPin=72

Q1>chip=top;OutputPin=73

Q2>chip=top;OutputPin=78

Q3>chip=top;OutputPin=79

Q4>chip=top;OutputPin=80

Q5>chip=top;OutputPin=81

Q6>chip=top;OutputPin=82

s[0]>chip=top;InputPin=41

s[1]>chip=top;InputPin=42

s[2]>chip=top;InputPin=43

s[3]>chip=top;InputPin=44

s[4]>chip=top;InputPin=46

S[5]>chip=top;InputPin=47

s[6]>chip=top;InputPin=48

s[7]>chip=top;InputPin=49

s[8]>chip=top;InputPin=51

s[9]>chip=top;InputPin=59

s[10]>chip=top;InputPin=60

s[11]>chip=atop;InputPin=62

s[12]>chip=top;InputPin=63

s[13]>chip=top;InputPin=64

s[14]>chip=top;InputPin=65

s[15]>chip=top;InputPin=67

SS0>chip=top;OutputPin=68

SS1>chip=top;OutputPin=69

SS2>chip=top;OutputPin=70

 

第五章心得体会

实验收获体会总结

本次设计的是做十六路数显示报警器,在整整一个星期的日子里,可以说是苦多于甜,但是可以学的到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。

特别是当每一个子模块编写调试成功时,心里特别的开心。

但是在编写顶层文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。

其次,在连接各个模块的时候一定要注意各个输入、输出引脚的线宽,因为每个线宽是不一样的,只要让各个线宽互相匹配,才能得出正确的结果,否则,出现任何一点小的误差就会导致整个文件系统的编译出现错误提示,在器件的选择上也有一定的技巧,只有选择了合适当前电路所适合的器件,编译才能得到完满成功。

通过这次课题设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

总的来说,这次设计的十六路数显示报警器还是比较成功的,在设计中遇到了很多问题,最后在老师的辛勤的指导下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。

最后,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!

 

参考文献

(1)EDA技术与项目训练

实验成果展示

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2