EDA课程设计

更新时间:2023-12-22 04:07:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

河北科技大学

课程设计报告

学生姓名: 学 号: 专业班级: 电信 课程名称: EDA技术

学年学期: 2013—2014 学年 第二学期

指导教师: 安国臣

2 0 14年 6月

课程设计成绩评定表

学生姓名 专业班级 设计题目 电梯控制器设计 指 导 教 师 评 语 指导教师: 安国臣 年 月 日 电信 学 号 起止时间 成绩 2014年6月16日—6月20日

目录

1.设计题目 2.设计目的 3.设计内容 4.设计原理 5.具体程序说明 6.实现的功能及运行规则 7.编译与仿真波形 8.硬件测试 9.设计体会 10.附录

引言

电梯控制器设计EDA技术的基本特征和基本工具总的来说,现代EDA技术的基本特征是采用高级语言描述,具有系统级仿真和综合能力。它主要采用并行工程和“自顶向下”的设计方法,使开发者从一开始就要考虑到产品生成周期的诸多方面,包括质量、成本、开发时间及用户的需求等等,然后从系统设计入手,在顶层进行功能方框图的划分和结构设计,在方框图一级进行仿真、纠错、并用VHDL、Verilog-HDL、ABEL等硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证,然后再用逻辑综合优化工具生成具体的门级逻辑电路的网表[3]

,其对应的物理实现级可以是印刷电路板或专用集成电路。

利用EDA技术进行电子系统的设计,具有以下几个特点:用软件的方式设计硬件;用软件方式设计的系统到硬件系统的转换是由相关的开发软件自动完成;设计过程中可用相关软件进行各种仿真;系统可现场编程,在线升级;整个系统可集成在一个芯片上,具有体积小、功耗低及可靠性高的特点。因此,EDA技术是现代电子设计的发展趋势。电子设计自动化(EDA)是一种实现电子系统或电子产品自动化的技术,它与电子技术、微电子技术的发展密切相关,它吸收了计算机科学领域的大多数最新研究成果,以高性能的计算机作为工作平台,促进了工程发展。

关键词: 电梯;VHDL;信号;运行

1.设计题目

电梯控制器设计

2.设计目的

本文应用状态机,设计了一个电梯控制器的状态机。状态机是符合人的思维逻辑的,且简单明了。

(1)通过对EDA课程设计,结合计算机科学的理论、抽象和设计三种形态,进一步掌握各功能部件的工作原理和逻辑实现,熟悉电梯控制器的基本工作原理。

(2)通过该EDA课程设计的学习,总结课程的学习内容,运用所学的数字电路以及计算机组成和状态机的基本原理、基本知识和基本技巧,解决某一个具体的试验问题,培养综合分析和解决问题的能力。

(3)为今后分析、设计、开发以及使用计算机软件设计打下坚实的基础。 (4)三层电梯广泛应用在大型的货运之中。其使用便捷,货运周期短,效率高成本低,对货运事业具有相当的经济价值。

(5)采用VHDL语言来设计实用三层电梯控制器,其代码具有良好的可读性和易理解性,源程序经A1tera公司的MAX+plus II软件仿真,目标器件选用CPLD器件。通过对三层电梯控制器的设计,可以发现本设计有一定的扩展性,而且可以作为更多层电梯控制器实现的基础。

3.设计内容

EDA设计实现一个3层电梯的控制系统。系统要求如下:(1)电梯到达楼层时,能发出指示信号(数码管显示楼层号);(2)能指示电梯的运行状态(上行或下行);(3)电梯的门操作具有关门延时设置(当按下梯内关门按钮时立刻响应关门操作,否则延时固定时间后响应关门操作);(4)正确响应各楼层的上行和下行请求(各楼层设置上行和下行选择按钮)。电梯运行规则:当电梯处在上升模式时,只响应比电梯所在位置高的上楼请求,由下向上逐个执行,直到最后一个上楼请求执行完毕。如果高层有下楼请求,直接升到有下楼请求的最高楼层,然后进入下降模式。当电梯在一楼时,不管是梯内梯外,电梯都只可能接收到上升的请求信号。此时,电梯就进入预上升状态,准备作上升运行。如果电梯没有接收到请求信号,电梯则在一楼待机。当电梯在二楼时,电梯则可能出现三种情况:电梯并没有接收到梯内梯外的任何请求信号时,电梯停在二楼待机;电梯接收到上升请求信号,进入预上升状态;电梯接收到下降请求信号,进入预下降状态。当电梯在三楼时,不管是梯内梯外,电梯都只可能接收到下降的请求信号。此时,电梯就进入预下降状态,准备作下降运行。如果电梯没有接收到请求信号,电梯则停在二楼待机。

4.设计原理

电梯控制器的功能模块如下图所示,包括主控制器、分控制器、楼层选择器、状态显示器、译码器和楼层显示器。乘客在电梯中选择所要到达的楼层,通过主控制器的处理,电梯开始运行,状态显示器显示电梯的运行状态,电梯所在楼层数通过译码器译码从而在楼层显示器中显示。分控制器把有效的请求传给主控制器进行处理,同时显示电梯的运行状态和电梯所在楼层数。由于分控制器相对简单很多,所以主控制器是核心部分。

电梯控制器原理图

5.具体程序说明

整段代码由三大部分组成:库声明,实体,结构体。

(1)库声明部分

调用VHDL库,通过library语句本程序应用了VHDL库中的”通用ieee库”和”标准std库”。 library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all;

(2) 实体部分

实体部分列出了代码所用到的所用输入输出端口。结构体部分共使用了分频进程,电梯状态进程,读按键、控制指示灯进程和信号灯进程4个进程。主控制器系统由VHDL语言实现,其输入输出端口定义如下: entity flift is

port(clk:in std_logic; ——时钟信号 close :in std_logic; ——立即关门 rightlight:buffer std_logic; ——门灯信号 up1:in std_logic; ——楼上升按钮 up2:in std_logic; —二楼上升按钮 down2:in std_logic; ——二楼下将按钮 down3:in std_logic; ——三楼下将按钮 uplight:buffer std_logic_vector(3 downto 1); ——上升指示灯 dnlight:buffer std_logic_vector(3 downto 1); ——下将指示灯 stop1,stop2,stop3:in std_logic; ——停止按钮 stoplight:buffer std_logic_vector(3 downto 1); ——停止指示灯 position:buffer integer range 1 to 3; ——楼层信号 led: buffer std_logic_vector(3 downto 0); ——楼层指示灯 doorlight:out std_logic; ——门灯信号 udsig:buffer std_logic); ——电梯运行状态

(3)结构体部分

使用状态机来实现电梯功能。

在结构体中,设计了俩个进程互相配合,一个是状态机进程作为主要进程,另外一个是信号灯控制进程作为辅助进程。状态机进程中的很多判断条件是以信

号灯进程产生的信号灯信号为依据的,而信号灯进程中信号灯的熄灭又是由状态机进程中传出的clearup和cleardn信号来控制。

在状态机进程中,在电梯的上升状态中,通过对信号灯的判断,决定下一个状态是继续上升还是停止;在电梯下降状态中,也是通过对信号灯的判断,决定下一个状态是继续下降还是停止;在电梯停止状态中,判断是最复杂的,通过对信号的判断,决定电梯是上升、下降还是停止。

在信号灯控制进程中,由于使用了专门的频率较高的按键时钟,所以使得按键的灵敏度增大,但是时钟频率不能过高,否则容易使按键过于灵敏。按键后产生的点亮的信号灯(逻辑值为‘1’)用于作为状态机进程中的判断条件,而clearup和cleardn信号为逻辑‘l’使得相应的信号灯熄灭。

分频进程:该进程的目的是产生不同频率的两个时钟,电梯控制时钟fliclk和按键控制时钟buttclk。

process(clk) ——产生电梯控制时钟fliclk和按键控制时钟buttclk begin

if (clk'event and clk='1') then q<=q+1; end if; buttclk<=q(0); fliclk<=q(3); end process;

状态机进程:该部分是整个设计的核心,根据电梯的工作模式,将电梯的工作分为10个状态,分别为停一层stopno1、开门状态dooropen、关门状态doorclose、开门等待1秒wait1、开门等待2秒wait2、开门等待3秒wait3、开门等待4秒wait4、上升up、下降down和停止stop。在每个状态下,判断输入信号的请求,转入下一状态且产生对应得输出信号。

停一层状态:电梯开门同时转入下一状态wait1。

when stoponl=>doorlight<='1'; position<=1; pos:=1;state<=wait1;

开门等待1秒:该状态时重新计入上升下降请求。如果此时有关门请求,则转入下一状态doorclose;如果没有请求,则下一状态为wait2。 when wait1=>clearup<='0'; cleardn<='0'; if(close='1') then state<=doorclose; else state<=wait2; end if;

开门等待2秒:如果此时有关门请求,则转入下一状态doorclose;如果没有请求,则下一状态为wait3。

开门等待3秒:如果此时有关门请求,则转入下一状态doorclose;如果没

有请求,则下一状态为wait4。

开门等待4秒:该状态的下一状态为doorclose。

关门状态:此时电梯开门。该状态要分为2种情况进行分析即电梯处于上升情况或下降情况。

当处于上升模式,同时电梯位于三层,如果此时电梯的内部与外部都没有请求,电梯转为下降模式,并进入下一状态doorclose;如果此时电梯内部有在三层下的请求或三层外部有下楼请求,电梯进入下一状态dooropen;否则电梯转为下降模式,并进入下一状态down。

if (position=3) then

if (stoplight=\ then udsig<='1'; state<=doorclose; elsif(stoplight(3)='1' or downlight(3)='1') then state<=dooropen; else udsig<='1'; state<=down; end if;

当处于上升模式,同时电梯位于二层,如果此时电梯的内部与外部都没有请求,电梯仍为上升模式,并进入下一状态doorclose;如果此时电梯内部有在二层下的请求或二层外部有下楼请求或上楼请求,电梯进入下一状态dooropen;如果此时电梯内部有在三层下的请求或三层外部有下楼请求,电梯仍为上升模式,并进入下一状态up;否则电梯转为下降模式,并进入下一状态down。 elsif (position=2) then if(stoplight=\ then udsig<='0'; state<=doorclose; elsif (stoplight(3)='1' or downlight(3)='1') then udsig<='0'; state<=up; else udsig<='1'; state<=down; end if;

当处于上升模式,同时电梯位于一层,如果此时电梯的内部与外部都没有请求,电梯仍为上升模式,并进入下一状态doorclose;如果此时电梯内部有在一层下的请求或一层外部有上楼请求,电梯进入下一状态dooropen;否则电梯仍为上升模式,并进入下一状态up。

当处于下降模式,同时电梯位于一层,如果此时电梯的内部与外部都没有请求,电梯转为上升模式,并进入下一状态doorclose;如果此时电梯内部有在一层下的请求或一层外部有上楼请求,电梯进入下一状态dooropen;否则电梯转为上升模式,并进入下一状态up。当处于下降模式,同时电梯位于二层,如果

本文来源:https://www.bwwdw.com/article/1dr5.html

Top