电梯EDA设计.docx
《电梯EDA设计.docx》由会员分享,可在线阅读,更多相关《电梯EDA设计.docx(16页珍藏版)》请在冰豆网上搜索。
电梯EDA设计
摘要
电子设计自动化(EDA)是一种实现电子系统或电子产品自动化设计的技术,它与电子技术、微电子技术的发展密切相关,它吸收了计算机科学领域的大多数最新研究成果,以高性能的计算机作为工作平台,促进了工程发展。
EDA的一个重要特征是使用硬件描述语言(HDL)来完成设计。
超高速硬件描述语言(VHDL)是经IEEE和美国国防部确认的标准硬件描述语言,自IEEE公布了VHDL的标准版本,IEEE-1076之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。
此后VHDL逐步取代了原有的非标准的硬件描述语言。
1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容。
本文介绍了基于VHDL语言实现的电梯控制系统的设计,使用了状态机,并进行了软件和实验平台的仿真。
该控制系统遵循方向优先的原则,提供楼层用户的载客服务并指示电梯的运行情况。
说明了用VHDL语言设计数字电路的方法以及VHDL语言在数字电路设计仿真中的重要作用,仿真结果表明VHDL语言应用于数字电路仿真是切实可行的,该语言在电子设计领域受到了广泛的接受。
关键词EDA,VHDL,电梯控制,状态机
Abstract
Electronicdesignautomation(EDA)isarealizationofanelectronicsystemorelectronicdesignautomationproductsoftechnology,withelectronictechnology,microelectronictechnologyiscloselyrelatedtothedevelopment,ithasabsorbedmostofthefieldofcomputerscienceandthelatestresearchresults,asahigh-performancecomputerWorkingplatformtopromotethedevelopmentoftheproject.EDAisanimportantfeatureoftheuseofhardwaredescriptionlanguage(HDL)tocompletethedesign.Super-high-speedhardwaredescriptionlanguage(VHDL)istheIEEEandtheU.S.DepartmentofDefenseconfirmedthestandardhardwaredescriptionlanguage,sincethepublicationoftheIEEEVHDLversionofthestandard,IEEE-1076,theEDAcompanieshavelaunchedtheirownVHDLdesignenvironment,ortobedeclaredTheirdesigntoolsandVHDLinterface.SincethenVHDLgraduallyreplacetheoriginalnon-standardhardwaredescriptionlanguage.1993,IEEEonVHDLwasrevisedfromahigherlevelofabstractionandsystemcapacityexpansionVHDLdescriptionofthecontents.Inthispaper,basedonVHDLlanguageoftheelevatorcontrolsystemdesign,theuseofthestatemachineandasoftwareplatformforsimulationandexperiment.Thecontrolsystemtofollowthedirectionoftheprincipleofgivingprioritytoprovidethepassengerserviceusersfloorsanddirectedtheoperationofthelift.NotetheuseofVHDLdigitalcircuitdesignmethodsandVHDLindigitalcircuitdesigntotheimportantroleofsimulation,simulationresultsshowthattheVHDLlanguageusedindigitalcircuitsimulationispracticable,thelanguageinthefieldofelectronicdesignhasbeenwidelyaccepted.
KeywordsEDA,VHDL,elevatorcontrol,StateMachine
千万不要删除行尾的分节符,此行不会被打印。
在目录上点右键“更新域”,然后“更新整个目录”。
打印前,不要忘记把上面“Abstract”这一行后加一空行
第1章引言
1.1课题的意义
EDA技术是用于电子产品设计中比较先进的技术,可以代替设计者完成电子系统设计中的大部分工作,而且可以直接从程序中修改错误及系统功能而不需要硬件电路的支持,既缩短了研发周期,又大大节约了成本,受到了电子工程师的青睐。
实现电梯系统的控制方法很多,可以用标准逻辑器件、可编程序控制器PLC、单片机等方案来实现。
但是这些控制方法的功能修改及调试都需要硬件电路的支持,在一定程度上增加了功能修改及系统调试的困难。
因此,在设计中采用EDA技术,应用目前广泛应用的VHDL硬件电路描述语言,实现电梯控制器的设计,利用MAXPLUSⅡ集成开发环境进行综合、仿真,并下载到CPLD可编程逻辑器件中,完成系统的控制作用。
在现代社会中,各种高楼大厦鳞次栉比,住在高层的住户和工作人员的出行就成为一个很显著的问题,本设计的主旨就是设计一套四层楼的电梯控制系统。
1.2EDA的应用
1)将广泛应用于高校电类专业的实践教学工作中
各种数字集成电路芯片,用VHDL语言可以进行方便的描述,经过生成元件后可作为一个标准元件进行调用。
同时,借助于VHDL开发设计平台,可以进行系统的功能仿真和时序仿真,借助于实验开发系统可以进行硬件功能验证等,因而可大大地简化数字电子技术的实验,并可根据学生的设计不受限制地开展各种实验。
对于电子技术课程设计,特别是数字系统性的课题,在EDA实验室不需添加任何新的东西,即可设计出各种比较复杂的数字系统,并且借助于实验开发系统可以方便地进行硬件验证。
自1997年全国第三届电子技术设计竞赛采用FPGA/CPLD器件以来,FPGA/CPLD已得到了越来越多选手的利用,并且给定的课题如果不借助于FPGA/CPLD器件可能根本无法实现。
因此EDA技术将成为各种电子技术设计竞赛选手必须掌握的基本技能与制胜的法宝。
2)将广泛应用于科研和新产品的开发中
由于可编程逻辑器件性能价格比的不断提高,开发软件功能的不断完善,EDA技术设计电子系统具有用软件的方式设计硬件;设计过程中可用有关软件进行各种仿真;系统可现场编程,在线升级;整个系统可集成在一个芯片上。
这些特点使其将广泛应用于科研工作和新产品的开发工作中。
3)将广泛应用于专用集成电路的开发
可编程器件制造厂家可按照一定的规格以通用器件大量生产,用户可按通用器件从市场上选购,然后按自己的要求通过编程实现专用集成电路的功能。
因此,对于集成电路制造技术与世界先进的集成电路制造技术尚有一定差距的我国,开发具有自主知识产权的专用集成电路,已成为相关专业人员的重要任务。
4)将广泛应用于传统机电设备的升级换代和技术改造
传统机电设备的电气控制系统,如果利用EDA技术进行重新设计或进行技术改造,不但设计周期短、设计成本低,而且将提高产品或设备的性能,缩小产品体积,提高产品的技术含量,提高产品的附加值。
1.2.1VHDL语言的发展
VHDL诞生于1982年,1987年底被IEEE和美国国防部确认为标准硬件描述语言。
自IEEE公布了VHDL的标准版本(IEEE-1076)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。
此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准硬件描述语言。
1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本。
现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。
有专家认为,在新的世纪中,VHDL与Verilog语言将承担起几乎全部的数字系统设计任务。
VHDL主要用于描述数字系统的结构、行为、功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件、一个电路模块或一个系统)分成外部(或称可视部分,即端口)和内部(或称不可视部分),即设计实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
1.2.2VHDL语言程序的基本结构
一个相对完整的VHDL程序(或称为设计实体)具有如图1-1所示的比较固定的结构。
通常包含实体(Entity)、结构体(Architecture)、配置(Configuration)、程序包(Package)和库(Library)5个部分。
图1.1VHDL语言的基本结构
1.3本课程设计的基本要求
设计4层楼电梯控制器,该控制器满足以下要求:
每层电梯入口设有上下请求开关,电梯内设有乘客到达层次的停站请求开关。
设有电梯所处位置指示装置及电梯运行模式(上升或下降)指示装置。
电梯每秒升(降)一层楼。
电梯到达有停站请求的楼层后,经1秒电梯门打开,开门指示灯亮,开门10秒钟后,电梯门关闭(开门指示灯灭),电梯继续运行,直至执行完最后一个请求信号后停在当前层。
电梯运行规则:
当电梯处在上升模式时,只响应比电梯所处在位置高的上楼请求信号,由下而上逐个执行,直到最后一个上楼请求执行完毕,如更高层有下楼请求,则直接升到有下楼请求的最高层接客,然后便进入下降模式。
当电梯处于下降模式时则与上升模式相反。
电梯初始状态是1层。
到达各层有音乐提示。
1.4本课程设计的目的
1)完成EDA程序设计课程的教学之后,通过2周的设计进一步巩固所学的知识,加深理解。
2)指导和促使学生通过各种途径对EDA和VHDL相关内容进行拓展和深入,增强自学能力及对知识的融会贯通能力。
3)提高动手能力、调试程序的能力、解决问题的能力和实际开发应用能力,掌握使用VHDL语言进行系统开发的一般步骤、方法和技巧。
1.5本课程设计的基本原理
电梯主要是通过控制器来实现其功能。
其基本结构原理如图1.5.1。
包括主控制器、分控制器、楼层选择器、状态显示器、译码器和楼层显示器。
乘客在电梯中选择所要到达的楼层,通过主控制器的处理,电梯开始运行,状态显
示器显示电梯的运行状态,电梯所在的楼层数通过译码器译码从而在楼层显示器中显示。
分控制器把有效的请求传给主控的楼层数。
由于分控制器相对简单很多,所以主控制器是核心部分。
图1.5.1电梯控制器原理框图
第2章系统设计
2.1课程设计的基本方案
VHDL(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage)即超高速集成电路硬件描述语言,主要用于描述数字系统的行为、结构、功能和接口。
是当今在电子工程领域中通用的硬件描述语言。
本文采用VHDL语言来设计实现梯控制器,其代码具有良好的可读性和易理解性。
电梯控制器有9个状态。
而等待、上升和下降状态是对电梯乘客起主要作用,因此我们必须弄明白等待、上升和下降这3个状态的运行及转化条件。
在这次课程设计中,主要运用EDA(ElectronicDesignAutomation)技术采用并行工程和“自顶向下”的设计方法,从系统设计入手,在顶层进行层次划分和结构设计,在功能模块一级进行仿真、纠错,并用VerilogHDL等硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证,最后用逻辑综合优化工具生成门级逻辑电路的网表,其对应的物理实现可以是印刷电路板或专用集成电路。
自顶向下的设计方法,就是在整个设计流程中各设计环节逐步求精的过程应用VHDL运行自顶向下的设计,就是使用VHDL模型在所有综合级别上对硬件进行说明、建模和仿真测试。
当程序完成以后,通过用MAX+plusⅡ软件对程序进行检错、纠错,直到程序无误后,对程序进行仿真测试。
2.2层次设计的方案
2.2.1电梯控制器系统组成框图
电梯控制器系统组成框图如图2.1所示:
图2.1电梯控制器系统组成框图
注:
该方案设计电梯包括有超载报警和自我故障清除功能,通过各楼层的请求信号输入控制器中控制电梯升降。
该电梯另外设计了楼层显示和请求信号显示。
2.2.2电梯控制器的状态转换图
电梯控制器中等待、上升和下降的状态转换图如2.2所示:
图2.2电梯控制器的状态转换图
注:
该状态图显示了电梯在不同楼层时接受不同请求信号时的转换过程,通过控制器内部的逻辑运算进而达到准确的运行结果。
2.3源程序设计
电梯控制器源程序如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entitydianti0is
port(clk:
instd_logic;--时钟信号(频率为2Hz)
full,deng,quick,clr:
instd_logic--超载、关门中断、提前关门清除报警信号
c_u1,c_u2,c_u3:
instd_logic;--电梯外人的上升请求信号
c_d2,c_d3,c_d4:
instd_logic;--电梯外人的下降请求信号
d1,d2,d3,d4:
instd_logic;--电梯内人的请求信号
g1,g2,g3,g4:
instd_logic;--到达楼层信号
door:
outstd_logic_vector(1downto0);--电梯门控制信号
led:
outstd_logic_vector(6downto0);--电梯所在楼层显示
led_c_u:
outstd_logic_vector(3downto0);--电梯外人上升请求信号显示
led_c_d:
outstd_logic_vector(3downto0);--电梯外人下降请求信号显示
led_d:
outstd_logic_vector(3downto0);--电梯内请求信号显示
wahaha:
outstd_logic;--看门狗报警信号
ud,alarm:
outstd_logic;--电梯运动方向显示,超载警告信号
up,down:
outstd_logic);--电机控制信号和电梯运动
enddianti0;
architecturebehavofdianti0is
signald11,d22,d33,d44:
std_logic;--电梯内人请求信号寄存信号
signalc_u11,c_u22,c_u33,c_u44:
std_logic;--电梯外人上升请求信号寄存信号
signalc_d22,c_d33,c_d44:
std_logic;--电梯外人下降请求信号寄存信号
signalq:
integerrange0to1;--分频信号
signalq1:
integerrange0to6;--关门延时计数器
signalq2:
integerrange0to9;--看门狗计数器
signaldd,cc_u,cc_d,dd_cc:
std_logic_vector(3downto0);电梯内外请求信号寄存器
signalopendoor:
std_logic;--开门使能信号
signalupdown:
std_logic;--电梯运动方向信号寄存器
signalen_up,en_dw:
std_logic;--预备上升、预备下降预操作使能信号
begin
com:
process(clk)
begin
ifclk'eventandclk='1'then
ifclr='1'thenq1<=0;q2<=0;wahaha<='0';--清除故障报警
elsiffull='1'thenalarm<='1';q1<=0;
ifq1>=3thendoor<="10";--超载报警
elsedoor<="00";
endif;
elsifq=1thenq<=0;alarm<='0';
ifq2=3thenwahaha<='1';--故障报警
else
ifopendoor='1'thendoor<="10";q1<=0;q2<=0;up<='0';down<='0';--开门操作
elsifen_up='1'then--上升预操作
ifdeng='1'thendoor<="10";q1<=0;q2<=q2+1;--关门中断
elsifquick='1'thenq1<=3;--提前关门
elsifq1=6thendoor<="00";updown<='1';up<='1';--关门完毕,电梯进入上升状态
elsifq1>=3thendoor<="01";q1<=q1+1;--电梯进入关门状态
elseq1<=q1+1;door<="00";--电梯进入等待状态
endif;
elsifen_dw='1'then--下降预操作
ifdeng='1'thendoor<="10";q1<=0;q2<=q2+1;
elsifquick='1'thenq1<=3;
elsifq1=6thendoor<="00";updown<='0';down<='1';
elsifq1>=3thendoor<="01";q1<=q1+1;
elseq1<=q1+1;door<="00";
endif;
endif;
ifg1='1'thenled<="1001111";--电梯到达1楼,数码管显示1
ifd11='1'orc_u11='1'thend11<='0';c_u11<='0';opendoor<='1';
--有当前层的请求,则电梯进入开门状态
elsifdd_cc>"000001"thenen_up<='1';opendoor<='0';
--有上升请求,则电梯进入预备上升状态
elsifdd_cc="0000"thenopendoor<='0';
--无请求时,电梯停在1楼待机
endif;
elsifg2='1'thenled<="0010010";--电梯到达2楼,数码管显示2
ifupdown='1'then--电梯前一运动状态位上升
ifd22='1'orc_u22='1'thend22<='0';c_u22<='0';opendoor<='1';
--有当前层的请求,则电梯进入开门状态
elsifdd_cc>"0011"thenen_up<='1';opendoor<='0';
--有上升请求,则电梯进入预备上升状态
elsifdd_cc<"0010"thenen_dw<='1';opendoor<='0';
--有下降请求,则电梯进入预备下降状态
endif;
--电梯前一运动状态为下降
elsifd22='1'orc_d22='1'thend22<='0';c_d22<='0';opendoor<='1';
--有当前层的请求,则电梯进入开门状态
elsifdd_cc<"0010"thenen_dw<='1';opendoor<='0';
--有下降请求,则电梯进入预备下降状态
elsifdd_cc>"0011"thenen_up<='1';opendoor<='0';
--有上升请求,则电梯进入预备上升状态
endif;
elsifg3='1'thenled<="0000110";--电梯到达3楼,数码管显示3
ifupdown='1'then
ifd33='1'orc_u33='1'thend33<='0';c_u33<='0';opendoor<='1';
elsifdd_cc>"0111"thenen_up<='1';opendoor<='0';
elsifdd_cc<"0100"thenen_dw<='1';opendoor<='0';
endif;
elsifd33='1'orc_d33='1'thend33<='0';c_d33<='0';opendoor<='1';
elsifdd_cc<"0100"thenen_dw<='1';opendoor<='0';
elsifdd_cc>"0111"thenen_up<='1';opendoor<='0';
endif;
elsifg4='1'thenled<="1001100";--电梯到达4楼,数码管显示4
ifupdown='1'then
ifd44='1'orc_u44='1'thend44<='0';c_u44<='0';opendoor<='1';
elsifdd_cc>"1111"thenen_up<='1';opendoor<='0';
elsifdd_cc<"1000"thenen_dw<='1';opendoor<='0';
endif;
elsifd44='1'orc_d44='1'thend44<='0';c_d44<='0';opendoor<='1';
elsifd