基于FGA智能电梯控制系统设计_第1页
基于FGA智能电梯控制系统设计_第2页
基于FGA智能电梯控制系统设计_第3页
基于FGA智能电梯控制系统设计_第4页
基于FGA智能电梯控制系统设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

题目:基于FPGA智能电梯控制系统设计科目:**班级:**学号:**学生姓名:**指导教师:**日期:**年**月**日舰智伴能之电奔梯茅控被制厨系勇统唐的法设妙计你思度想沈摘尺要纤智障能集电枕梯棋的厨编畜写凤的乖过援程排也崭不帽是垮一虚帆遵风碎顺剧的执。写而留且客我闷试哄过滋好殿多肝种分方弟法瓣去粮实永现常电碧梯谎的孩状印态痛的希转叶移汉。背起凡初够我络想弯到亦的陆肯拘定尤是仅有述限蠢状自态冤机嘱。柱不摘过全由氏于碰开惜始疤我爬想皇到呆只花有燃六淋个木请躁求墙(凡分考别肠为改1侵~清6肢楼寸)暴,死后晶来链在凭老底师旺的鲜启腥发修下壶和他东旋十亩二羽楼佩的喜电怨梯削实撤际疮运百行挠情动况滑我衬发庸现肾,令6结个柄按水钮上肯群定招是世不扫够快的触,薄所农以淘我发又关加吓了曾5择个淘向映上购的献请嘱求葡按备钮静和弃5弄个需向乐下希的刮请祝求能按上钮捷,衔这赚样正总专共预就断有狸1是6吩个卧按姐钮宝了烤,什由疑于掏当头时滤我插没班有夹想婚到鲜用薄信叔号液并感置嗽的败方护法测,负所烂以焰需州要维分门析骗的侧情灰况姑实册在津是拆太锡多逢了醉,惠我飞也狸没础有目信编心洋了饶。缝不控过叶问暖题乌始跟终孔都捕是硬要宰得纳到公解晃决装的聪,抹后检来凝我候在立我涉们祥寝借室文的声一喊个添同燃学腐的凡参异考咬书挨上终看么到崭了茂一祖个尚用屠V炸H惭D纪L漏语瘦言塘编惕写炸的霸智珠能蚊电饮梯直控皮制趟器需的废程沸序诞,浅不恋过逗很担不警完哨整助,谨它些给昆我撤的键最词大乱的震启贡发晒就速是弓“砌信畜号欢并迫置赶的别算大法跌”领,哈我棍才物发害现批这谢样缺一患来渔的斩话掌,题我郊的信工震作障量振就集大贿大平减队少桌了馅。垃当货时祸我毫不别仅锯采满用址“普信讽号轻并日置旱的注算心法翠”箭外姿,琴还谦采稠纳叠了捏它回的漆“狐以放楼岸层蔑为尚电涌梯乒的国状倾态船转岩移热的却依拖据萍”堡的凑思浩想背,乞这认确驻实坏是汤一府个晨不特错趟的缩方柱法月,望不英过嘱当捉时挽我笛一趟直哈没宴有昨任们何陪进倍展园,枕一袖是协它唯是雁用码V踢H驳D响L煎语躺言默编帅写楚的滋,坦而留且挖我穷对奇这钱个模语腿言茧不炕是贿很轧熟氧悉董所怎以醉不剂是汤特彻别体理觉解膜。恭后忽来惯竟饲然奋干困起缘了云把辨V拆H夫D他L垮语摩言爪翻可译短成狮v监e寿r办i怀l产o甩g到语流言猛的婆工穗作瞎,闸这稠样膜没隐有晒任牲何凯含先金纠量饶的处工狱作萍让逼我创浪墨费驼了坊不盛少贫时劣间袖。劣现临在据想亦起键来对,误我研才绳发鞋现洋我弱竟记然设迷凤失愚了兴自渐己柄,飘我冲原粒先难自梁己鸦的玉算技法塑已母经香被桶丢差失翁了勉,业留糕下狼了厨的豆仅循仅它是证一我些斯他但人任的骗程爸序搞。陡“犁以郊楼静层搜为壮电抗梯带的抽状膝态式转熄移浩的敢依卫据鸽”喷的湿编镇程捡方缝法承让粱我师没图有斜得虏到稼任芒何扔进终展闭,吸我昼放暖弃勉的肃这押种歪处临理消多微种认状黄态欣的池方普法粉,赤继滚而披转殊向互了洁我河原孟先声的储“严有极限瓶状暖态或机的”润的贷方圾法哈。单使极用途三巩段妹式鞭的讨有武限编状亚态稿机较的踪方籍法湾也殃花挑了丘很球多犹时瓦间言去淋修仓正挺和微改咸善婚。埋实扫现卵了庸基接本络的浓功茅能持,合当甲时河一刘遇做到布比杂较涝复杠杂瞒的符情赔况华时雪(砖比聚喻慎同识时帖有葱几装个钟人鸟在余请砌求久或术者吉是临同荒时瞒有稳两知个兄在识不缺同暮楼防层柴的杠请研求秤时栽电器梯秃该斤如桂何导运店行级呢轨,奖这厘些辅特阁殊面情勒况者我迫在环当附时恋一伴直蛙没膜有融找隙到混合煎适蒜和式有币效筐的然方品法叔去飘解殖决逗)窜。聪关集键坑词三:违信绞号蜻并顿置同v干e补r尿i零l掉o棚g申智照能糟电莫梯直I叉n蝴t番e帅l珠l斤i辰g郊e骑n塘t权启e应l亚e拉v榨a耍t络o拨r搜奖c捉o腐n浅t锯r诚o约l缸s碍y岁s归t脖e块m翅挽d兴e齐s赤i康g猾n指股t坦h习o蓬u弟g穷h嚼t照A辉b柿s樱t术r颗a咱c述t泳I或n筐t阅e烈l勒l折i首g抚e克n登t动绝e已l疫e恨v纱a吹t黎o供r纠柄c犯o近m慰p蓝i韵l抵a慌t舒i宾o帽n评金p晨r涌o咬c圈e漏s稼s专任i懒s罪天n界o树t透据e翠a侄s革y蝇.午殿A皮n嚷d初畅I测涝t坚r掘i设e永d鉴虑a无脑v形a响r排i袭e稠t泡y无赶o甩f骄招w狗a神y耗s送弓t煮o娱触r炉e枝a感l熟i享z效e强终t羊h院e器档t铸r摄a伤n吼s战f服e坊r监膊o驳f某槐t佣h惨e旨贷s陶t鉴a淡t叼e南.卷坟A道t端乘f壮i啊r仰s氏t头书I糕岔t明h但o粪u纹g讯h眯t点馋t茅h蹄e旗亦a姿f泰f房i泽r蜓m得a述t残i接o雄n主越i师s盏稿a肤宪f钻i赚n恭i骨t去e卵尖s遥t市a谨t耳e泄桶m成a拍c紧h占i齐n列e赢.眼浸B历u凉t鸦构d脑u单e售性t门o尊暗s阁t是a初r洗t乱聋I虚泄t纠h相o惕u辨g瘦h云t肃盾o钢n娇l晋y紫伯s巧i目x投奴r兽e趋q默u退e山s垒t流讨(或r停e绒s鲁p另e逢c颈t膜i听v揪e章l吵y谋违f它o钳r橡脱1薪冤~熔抄6园牙/寺倡f傻)柿胶a浪n像d访蠢t痕h劣e过n历药i坝n前吹t猜e畏a纵c民h画e减r胳芹i钱n纪s粮p惯i浴r富e咬d瑞哥a应n改d伐久e悟a欲s电t隙逗t骨e割n直址o乒n息斜t拘h葬e戚印s倘e闸c裳o公n览d沉命f慰l仆o哥o抗r懒厘o吴f秤慨t呜h损e逃名e河l猎e粗v涂a绢t桶o数r根感a赏c时t劝u残a环l粪腿o此p泥e桥r血a滥t钥i壶o其n至亭s车i司t渠u缸a亭t素i愉o向n泻革I究书f柳o为u故n弃d柏,倒榨6岸俗b种u贤t国t抬o超n毕态a丧f傅f次i瓦r笛m夺a惨t非i零o拘n泼延i届s摩锈n羊o困t览齐e鸽n狭o连u阻g弹h帖,塘浩s棋o要积I等膜a彩d低d西e抓d皱觉f浇i脊v敬e僻音u维p货w应a抢r年d饭策r懂e贞q桶u碑e钻s削t少等b捐u吵t搁t剃o环n兔叨a厦n项d站刑f由i嚼v折e敌跳d夏o幼w崖n杰w赶a精r穴d降纺r揉e下q漠u第e似s慎t呜尾b脏u蛋t光t急o和n号,材主s趣o贡势i恭t哥逗h融a片s怕比1独6假林b括u苹t备t汽o滔n府,躬池b痕e润c膛a戚u剥s校e安涉a快t躬脂t织h陵a门t坐顺t铲i找m肌e拿叨I带艇d雾i鞋d薯n攻'撤t晶赌t翻h崭i读n搅k镇咳b艇y究蜓s婶i眠g亚n赖a填l所恳a妖n害d应兴i仙n痰v礼e沟r稿t菠e邪d厨臂m尝e态t裂h落o竹d趴,个汇s磨o陵误n培e赌e写d库慕a乏n当a稻l浸y寨s挡i络s旋挽o嘱f临售t提r寄u逢e牙胆i印s嫁毛t蚀o多o亿策m见a敌n情y坑,女斑I氏帜a童l户s梨o拌爷h评a叹v往e贪陈n题o伪快c今o笨n脱f廉i泰d带e摸n竖c让e燕.续竖N再e樱v太e舒r撒t币h洁e老l颈e越s咳s咽迷t毙h嘱e撤欣p虫r罚o歉b思l缩e繁m疼起a舟r办e初朵a巩l较w举a迅y填s搭针t冈o弹炮b裂e腥部s求o中l具v君e予d舰,淡云l殊a虚t狡e踢r抵煎I约书i恭n星焰o录u堪r蹲喂b惰e葱d速r抗o眼o颠m薪隙i躁s触幅a窝设c辅l帆a剖s腿s敏m漆a幼t府e征嘴o挠f瞧嘱r山e猜f迫e惑r椅e挣n东c芬e计挪b匙o亭o砍k稼s圈外o愈n鲜斑s矮a伙w节驱a摸倒w纪i技t节h尤痰V芬H牢D族L企辣l掀a撒n舅g释u顽a鸽g畅e搜查p复r狮e蜡p吗a兴r孤a犹t羽i麻o盒n芝蜜i怖n抵t陵e贼l广l蛛i桃g蛮e辟n阴t太胀e尼l滥e差v华a厌t顺o铁r宏夕c停o色n牢t程r声o督l称l停e而r矩替p架r介o株g览r氏a题m未,范烦b森u齐t剥喉i痕s侄孔n长o翻t析扭c缸o掀m瞧p躁l敞e得t绘e业,有极i特t叫雾g普i吉v哪e墨s统迁m背e偏册t默h魔e袋潮g义r供e张a下t絮e茂s抛t咐较i桑n炸s窃p瓦i级r届a惠t艰i徐o棒n塑疲i傅s讨通"幻s鼠i势g架n桐a央l咏奖a觉n馋d箩缴i榆n绞v勤e忽r激t胖e粉d花延a夫l带g蚂o扎r附i妄t板h饺m体"最,赛国I似顽d悬i得s戏c零o旱v塞e基r珠e哪d授按t们h秤i黎s识迁w经a弹y研,窜胸t套h凶e蛋n荒拦m近y纪它w驳o造r细k题l争o储a据d成熊i炊s著于g涝r斤e类a植t随l胆y晕偷r败e宁d眉u硬c扛e兽d养.Iwasnotonlyuse"signalandinvertedalgorithm"outside,stilladoptedits"tothefloorforelevatorstatustransferbasis"thought,itisreallyagoodmethod,butIhaven'tmadeanyprogress,oneisitiswithVHDLlanguagepreparation,andI'mnotveryfamiliarwiththelanguagesonotparticularlyunderstanding.LaterunexpectedlyraisedtheVHDLlanguagetranslationintoveriloglanguagejob,sothatnomeasureofworkletIwastealotoftime.NowthatIthinkaboutit,IfoundthatIhadlostthemselves,Ihadhisownalgorithmhasbeenlost,leavingtheothersareonlysomeoftheprogram."Tothefloorforelevatorstatustransferbasis"programmingmethod,letIhaven'tgotanyprogress,Igiveupthishandleavarietyofstatemethod,thenturnedtomyoriginal"finitestatemachine"method.Usethefinitestatemachine3-sectionalmethodsalsospentalotoftimetomodifyandimprove.Realizethebasicfunctions,whenameetmorecomplexsituations(parablesmeanwhileseveralpeopleinrequestorisalsohavetwoindifferentfloorrequest?HowshouldtheelevatorrunningthesespecialcasesIatthattimehasnotfindappropriateandeffectiveapproachtosolve).KEYWORDS:AsignalandbuyverilogStatemachine目录HYPERLINK\f\h\z\u随高层楼宇的增加,电梯越来越多的走进了人们的生活,对人们的生活的影响越来越大。为了让电梯更好的服务人们,各种电梯新技术不断地发展起来。随着人们生活水平的不断提高,经济的快速发展和生产生活的需要,城市高层建筑如雨后春笋拔地而起。与此相应,作为一种可以垂直升降运输的工具一电梯也得到迅猛的发展。现在,电梯己完全融入我们的生活、工作及学习中,人们越来越离不开它。因此,它的安全可靠性、迅速准确性、舒适性,对人们来说都是非常重要的。为了确保电梯正常运行、安全使用,一般电梯都有专业的维修管理人员。他们必须对电梯原理、性能、特点、控制、运行要全面认识和掌握,才能做到对电梯的正确使用、管理及维护。根据我国有关部门的规定,电梯作业属于特种作业,其作业人员必须经过专门培训,并经理论考试和实践考核合格后,发给《特种作业操作证》方可上岗操作。同时,对电梯操作人员定期考核,让他们定期参加安全技术学习,扎扎实实地做好电梯维护和保养工作,才能使人们平安长久的使用电梯少,2.2电梯控制的研究背景电梯控制系统是一个相当复杂的逻辑控制系统.系统要同时对几百个信号进行接收、处理。由于用户对电梯功能的要求不断提高.其相应控制方式也在不断发生变化。随着EDA技术的快速发展.基于FPGA的微机化控制已广泛应用于电梯电路设计与控制的各个方面。2.3我国电梯的发展概况电梯控制是属于机电一体化研究领域,它涉及到多个方面,包括:机械工程、电子技术、电力电子技术、电机与拖动理论、自动控制理论、电力拖动自动控制系统、微机技术和土建工程等多个科学领域。100多年来,我国电梯行业的发展经历以下几个阶段:①对进口电梯的销售、安装、维护阶段(1900-1949年),这一阶段我国电梯拥有数量仅约1100多台;②独立自主、艰苦研制、生产阶段(1950-1979年),这一阶段我国共生产安装电梯约1万台;③建立三资企业,行业快速发展阶段(自1980年至今),这一阶段我国共生产安装电梯约40万台。目前,我国已经成为世界最大的新装电梯市场和最大的电梯生产国。并且还有着巨大市场和发展潜力空间。2002年,中国电梯行业电梯年产量首次突破6万台。中国电梯行业自改革开放以来第三次发展浪潮正在掀起。第一次出现在1986-1988年,当时适逢我国高层建筑业的大规模浪潮的第一次兴起。第二次出现在1995^-1997年。应该说,随着我国经济的增长,电梯市场一直保持着旺盛的需求。其次表现在企业的规模效益逐步展现。随着我国经济平稳持续的发展,尤其是住宅产业作为国民经济新增长点的提出,为电梯业的发展提供了良好的机遇。今后几年,我国将年建住宅3.5亿平方米,公建项目1.2亿平方米。随着城市向大型化、高层化的发展,我国每年将需要电梯在40000台以上。如此大的市场需求,将是电梯业再创辉煌的最好契机。2.4电梯设计的具体目的及控制要求使用FPGA完场6层的电梯控制系统。可以使用状态机实现。要求指示电梯所在楼层位置等其他必要的信号。通过仿真结果验证其正确性,并在开发板上进行硬件测试。系统的要求如下:电梯共有6层。电梯运行规则:上升时:响应比当前位置高的上楼要求,由下往上逐个执行;如果楼层有下楼请求,直接升到由此请求的最高层,然后进入下降模式。进入下降模式后,只响应比当前位置低的下楼请求,由上到下逐个执行。电梯有6层,每1秒上升或者下降1层。有信号灯指示电梯处于上升或者下降状态,并有数码管显示电梯到达层数。每一层有信号灯指示该层电梯门状态,有两个按键分别响应上升或下降的请求每一层电梯内部有乘客到达楼层的停站请求开关及其显示电梯到达有停站请求的楼层后,电梯门打开,指示灯亮,4秒后电梯门关闭,指示灯灭,直至执行完。最后停在发出最后一个请求的楼层。电梯的初始位置为一层,处于开门状态。2.5电梯控制器设计原理及思路原理与系统设计思想来源:平时我们上课或者是上自习都去过东十二楼或者去过科技楼、南一楼,免不了坐坐电梯,对它的基本工作原理我们有知道多少了,这次我们要制作一个智能电梯控制器,必须对它的工作原理有十分清晰的了解。我们设计的智能电梯控制器应该可以实时接受各楼层的上下请求信号及电梯内部的停靠请求,然后根据这些请求实现对电梯正确的控制:1、除了顶层和底层外,各楼层均设有上下请求开关,顶层和底层分别设有下降和上升请求开关,这一点应该不难理解;电梯内设有乘客到达层次的请求开关。2、电梯每1s上升或下降一层3、电梯到达有停站请求的楼层后,经过1s后电梯门打开,开门指示灯亮,开门5s后电梯指示灯灭,电梯继续运行,直至运行完最后一个请求后停靠在当前层。以上是我们所应实现的基本功能。我在序言中也讲到了,“应用有限状态机”实现电梯的实时控制是最好不过的方法了,通过我的分析以及参考图书馆的有关书籍,也少不了参照一些网上的程序,最后总结出了电梯正常运行的七个状态:上升、下降、上升的过程中途停止、下降的过程中途停止、开门、关门、等待状态。电梯在上述七个状态间的转移是通过三段式状态机来实现的,各状态间的转移大体与生活中的电梯运转一致,有如下的基本原则:1、方向为第一优先准则,这就是曾老师给我们的技术指标。电梯在运转时先响应同方向上的请求,只有当同方向上的请求响应完后,才能转而响应不同方向上的请求。2、初始化状态为1楼等待门是关闭的。这个就不用多解释了。除了我对电梯的运行规律做出如上的分析外,我的另一个选择开发智能电梯控制器的原因是我想锻炼一下自己的逻辑思维和分析复杂问题的能力。2.6电梯控制系统状态图分析最开始我根据DE2板子所能提供的资源,把楼层数设为6层。从我查阅的书籍中我总结了两点是我可以借鉴的。首先,是怎样处理数量繁多的电梯输入信号,如果采用分情况讨论的话,程序一路写完,复杂度肯定是不堪设想,而且我还不敢保证是否分析到所有的情况了。always@(call_up_1orcall_up_2orcall_up_3orcall_up_4orcall_up_5)up_all={1'b0,call_up_5,call_up_4,call_up_3,call_up_2,call_up_1}; //将各下降请求信号实时地合并(1楼为底层,无下降请求,考虑到通用性,将第1位填零)always@(call_down_2orcall_down_3orcall_down_4orcall_down_5orcall_down_6)down_all={call_down_6,call_down_5,call_down_4,call_down_3,call_down_2,1'b0}; //将各停靠请求信号实时地合并always@(request_1orrequest_2orrequest_3orrequest_4orrequest_5orrequest_6)request_all={request_6,request_5,request_4,request_3,request_2,request_1};以上这一段程序就是我采用的信号并置处理很多输入信号的一种行之有效的方法。其次,我从资料中学习到的方法就是如何把信号并置的方法和有限状态机联系起来。这一点从下面的参数定义中可以窥见一二。parameterWAIT=7'b0000001,UP=7'b0000010,DOWN=7'b0000100,UPSTOP=7'b0001000,DOWNSTOP=7'b0010000,OPENDOOR=7'b0100000,CLOSEDOOR=7'b1000000; //定义楼层的符号常量parameterFLOOR1=6'b000001,FLOOR2=6'b000010,FLOOR3=6'b000100,FLOOR4=6'b001000,FLOOR5=6'b010000,FLOOR6=6'b100000;parameterTRUE=1'b1,FALSE=1'b0;//定义门打开和门关闭的符号常量parameterOPEN=1'b1,CLOSED=1'b0;//定义电梯上升,下降和静止的符号常量parameterUPFLAG=2'b01,DNFLAG=2'b10,STATIC=2'b00;这里采用了七个状态实现了有限状态机。WAITWAITUPUPSTOPDOWNOPENDOORDOWNSTOPCLOSEDOOR以上是我分析的两种基本的电梯状态转换图:黑线:WAITTOUPTOUPSTOPTOOPENDOORTOCLOSEDOORTOWAIT粉红线:WAITTODOWNTODOWNSTOPTOOPENDOORTOCLOSEDOORTOWAIT由于状态转换的输入条件实在太多,在此我不画出,读者可以自行在程序(附有详细注释)中领会。我的程序中采用的是标准的MEALY型状态状态机。而且是老师建议的三段式的结构来写的。不过我有一点不明白的就是为什么在我的QUARTUS7.1中运用RTLVIEW不能显示出这个三段式的有限状态机。不过我会继续努力一下的,目前我智能用图形框来表示这个状态的流程了。第三章电梯控制系统的设计与实现3.1MAX+PLUSII的介绍Max+plusII(或写成Maxplus2,或MP2)是Altera公司推出的的第三代PLD开发系统(Altera第四代PLD开发系统被称为:QuartusII,主要用于设计新器件和大规模CPLD/FPGA).使用MAX+PLUSII的设计者不需精通器件内部的复杂结构。设计者可以用自己熟悉的设计工具(如原理图输入或硬件描述语言)建立设计,MAX+PLUSII把这些设计转自动换成最终所需的格式。其设计速度非常快。对于一般几千门的电路设计,使用MAX+PLUSII,从设计输入到器件编程完毕,用户拿到设计好的逻辑电路,大约只需几小时。设计处理一般在数分钟内内完成。特别是在原理图输入等方面,Maxplus2被公认为是最易使用,人机界面最友善的PLD开发软件,特别适合初学者使用。在这里我们可以先看一看用FPGA/CPLD开发工具进行电路设计的一般流程通常可将FPGA/CPLD设计流程归纳为以下7个步骤,这与ASIC设计有相似之处。1.设计输入。在传统设计中,设计人员是应用传统的原理图输入方法来开始设计的。自90年代初,Verilog、VHDL、AHDL等硬件描述语言的输入方法在大规模设计中得到了广泛应用。2.前仿真(功能仿真)。设计的电路必须在布局布线前验证电路功能是否有效。(ASCI设计中,这一步骤称为第一次Sign-off)PLD设计中,有时跳过这一步。3.设计编译。设计输入之后就有一个从高层次系统行为设计向门级逻辑电路设转化翻译过程,即把设计输入的某种或某几种数据格式(网表)转化为软件可识别的某种数据格式(网表)。4.优化。对于上述综合生成的网表,根据布尔方程功能等效的原则,用更小更快的综合结果代替一些复杂的单元,并与指定的库映射生成新的网表,这是减小电路规模的一条必由之路。5.布局布线。在PLD设计中,3-5步可以用PLD厂家提供的开发软件(如Maxplus2)自动一次完成。6.后仿真(时序仿真)需要利用在布局布线中获得的精确参数再次验证电路的时序。(ASCI设计中,这一步骤称为第二次Sign—off)。7.生产。布线和后仿真完成之后,就可以开始ASCI或PLD芯片的投产。同样,使用Maxplus2基本上也是有以上几个步骤,但可简化为:1.设计输入

2.设计编译

3.设计仿真

4.下载3.2电梯控制系统的VHDL语言设计及仿真模块示意图和输入输出描述电梯主控制器模块elevator_controller:端口声明:InputPort:call_up_1,call_up_2,call_up_3,call_up_4,call_up_5分别为1-5楼的上行请求信号,call_down_2,call_down_3,call_down_4,call_down_5,call_down_6则分别为2-6楼的下行请求信号request_1,request_2,request_3,request_4,request_5,request_6则分别为电梯内部的停靠1-6楼的请求上述各端口均为有请求时,输入为高电平,否则为低电平;clk分别为状态转移时钟,reset为复位信号OutputPort:PosOut输出当前电梯所在的楼层,DoorFlag为开门标志,UpDnFlag为电梯上下标志LiftState输出当前电梯的状态.PosOut取值可为6'b000001,6'b000010,6'b000100,6'001000,6'b010000,6'b100000分别代表电梯处在1,2,3,4,5,6楼。这样编码的话,有利于后面的比较判断。DoorFlag取值可为1'b0,1'b1,分别代表当前门是关闭和当前门是打开的。UpDnFlag取值可为2'b00,2'b01,2'b10,分别代表当前电梯是上升的,下降的和静止的。LiftState7'b0000001,7'b0000010,7'b0000100,7'b0001000,7'b0010000,7'b0100000,7'b1000000,分别电梯处于等待模式、上升模式、下降模式、上升停止,下降停止、开门和关门等7个状态。(2)分频模块frequence_div:端口说明:Inputports:cp_50M;outputports:cp_1;(3)电梯状态仲裁器arbitrator:端口说明:Inputports:elevator_state;count_in;outputports:outputopen_enable,stop_enable,up_enable,down_enable,close_enable;(4)LCD驱动模块DE2_Default:端口说明:Inputports:inputopen_enable,stop_enable,up_enable,down_enable,close_enable;input CLOCK_50; // 50MHzinputKEY;outputports:inout [7:0] LCD_DATA; // LCDDatabus8bitsoutput LCD_ON; // LCDPowerON/OFFoutput LCD_BLON; // LCDBackLightON/OFFoutput LCD_RW; // LCDRead/WriteSelect,0=Write,1=Readoutput LCD_EN; // LCDEnableoutput LCD_RS;// LCDCommand/DataSelect,0=Command,1=Data模块设计过程现在我简要的说明一下我的模块的设计过程:(1)电梯主控制器模块elevator_controller:此段智能电梯控制器由三个重要部分组成的。(a)信号并置部分,完成对5路向上请求、5路向下请求、6路内部请求的信号并置,化繁为简。(b)三段式有限状态机部分。在有请求的情况下,电梯控制器还要根据电梯的当前状态和当前的楼层去判断电梯的下一步该如何运作。(c)计数器部分。完成电梯的开门、关门的时间管理。(2)分频模块frequence_div:这段分频器完成对50Mhz的1分频操作。采用传统的“一半就翻转”的计数技巧。(3)电梯状态仲裁器arbitrator:完成电梯信号到LCD控制的信号转换。其中也采用了“电梯主控制器”中的信号并置的思想。这一点可以在我的程序中十分清楚的看到,在此我不再赘述。(4)LCD驱动模块DE2_Default:这个模块我是采用“拿来主义”的。因为是DE2板子提供的源程序,所以编写起来还算比较轻松。就只加了一个“根据不同的输入产生不同的输出”的模块。中途还遇到了字符型液晶不能更新的问题,不过在同学的帮助下,最终还是解决了。(5)数码管译码模块:(6)数码管时间译码模块:以上两个模块一起讲比较合适,因为它们都是采用了同样的译码原则,只不过条件不一样而已。我们可以针对不同的输入根据自己的意愿把它译成同样的数码显示。以上的模块设计过程说的比较的简约。主要是大概的介绍了我的各个模块的基本设计原理,希望读者能从程序中仔细体会这种原理。波形仿真(1)当电梯处于初始状态时,电梯在高层有向下的请求时:(2)LCD的显示由于数据太多,所以单独显示如下:首先显示:“itisstatic..”随后会显示:以上的字符发送到液晶显示模块之后,可以显示“doorisrising..”随后会显示:可以显示“itisstatic..”以上的字符发送到液晶显示模块之后,可以显示“doorisopening..”随后会显示:以上的字符发送到液晶显示模块之后,可以显示“itisclosing..”最后会显示下列字符,电梯重新回到初始等待状态:以上可以显示“itisstatic..”说明:由于LCD显示波形会占用比较多的空间,所以以上我仅以在高层有向下的请求为例来说明,电梯的状态完全可以通过LCD来正确地显示出来。鉴于此,我的下面的波形将不展示LCD显示部分的波形图。(3)当电梯停在6楼处于等待状态时,在1楼和2楼同时有向上的请求时:(4)当电梯停在1楼处于等待状态时,在6楼和5楼同时有向下的请求时:(5)当电梯停在6楼时,有在5楼的向下的请求时,电梯应该先到五楼,电梯内部请求到1楼,如果电梯在下降的过程中,有在2楼的向上的请求时,电梯应该先相应内部请求,然后相应外部请求:(6)电梯的强制运行按钮forbid:3.3电梯控制系统的实验平台实现结论与体会结论:我们设计的智能电梯控制器应该可以实时接受各楼层的上下请求信号及电梯内部的停靠请求,然后根据这些请求实现对电梯正确的控制:1、除了顶层和底层外,各楼层均设有上下请求开关,顶层和底层分别设有下降和上升请求开关,这一点应该不难理解;电梯内设有乘客到达层次的请求开关。2、电梯每1s上升或下降一层3、电梯到达有停站请求的楼层后,经过1s后电梯门打开,开门指示灯亮,开门5s后电梯指示灯灭,电梯继续运行,直至运行完最后一个请求后停靠在当前层。以上是我们所应实现的基本功能。我在序言中也讲到了,“应用有限状态机”实现电梯的实时控制是最好不过的方法了,通过我的分析以及参考图书馆的有关书籍,也少不了参照一些网上的程序,最后总结出了电梯正常运行的七个状态:上升、下降、上升的过程中途停止、下降的过程中途停止、开门、关门、等待状态。电梯在上述七个状态间的转移是通过三段式状态机来实现的,各状态间的转移大体与生活中的电梯运转一致,有如下的基本原则:1、方向为第一优先准则,这就是老师给我们的技术指标。电梯在运转时先响应同方向上的请求,只有当同方向上的请求响应完后,才能转而响应不同方向上的请求。2、初始化状态为1楼等待门是关闭的。这个就不用多解释了。除了我对电梯的运行规律做出如上的分析外,我的另一个选择开发智能电梯控制器的原因是我想锻炼一下自己的逻辑思维和分析复杂问题的能力。体会:本人认为电梯时未来高层建筑必不可少的一种工具,并且由于世界人口的急剧增加和地球的有效使用面积的减少,未来的建筑都在向越来越高的方向发展,所以电梯在未来有着举足轻重的作用,对此研究有着十分积极的作用。通过对此课题的研究,本人还发现一个优秀的电子产品必须具备自动化能力,本人还认为此课题还培养了我们更好的了解本专业的知识,提高个人修养,锻炼自己的实际操作能力以及对待一件事的严谨态度,以及对以后的工作提出了宝贵的经验。首先感谢我们学校给了我们这样一个宝贵的锻炼自己的能力的机会。我觉得在大学缺少的就是象这样的锻炼,我们不是有好多同学抱怨自己工作没经验、做项目没有经验吗?我觉得只要象这样的机会都每次认真对待了,我觉得我们就会有一个很不一样的看法。回顾一下我们从大一到现在象这样的机会不多:大二上的C语言程序课程设计;大二下的电工实习;大三上的电子线路设计与测试实验—多功能数字钟的设计;大三上的IC课程设计;可以看出我们这样的机会不是没有,如果每一次我们都认真做了,认真总结了,认真分析了,资料认真查了,那么不管最终成绩如何,我觉得我们都成功了。致谢回首课题研究的历程,对那些引导我、帮助我、激励我的人心中充满了感激。首先要感谢导师杨小献老师,虽然我们是在开始毕设时才算真正的认识,但他却能以一位长辈的风范来容谅我的无知,给我不厌其烦的指导,从论文定题、开发过程的疑难解决到论文概要、写作方式以及用词造句、标点符号,倾注了杨老师大量的心血。课题研究开发以及论文写作期间,深深受益于杨老师的关心、爱护和谆谆教导。能在杨老师手下做毕设,我为自己感到庆幸。在此谨向杨老师表示我最诚挚的敬意和感谢!同时,感谢所有教导过我、关心过我的老师以及电信学院的所有老师。他们为我的学业倾注了大量心血,为人师表的风范令我敬仰,严谨治学的态度令我敬佩。最后再次我非常感谢杨老师对我的帮助。附件程序智能电梯主控制器模块moduleelevator_controller(//inputports:cp_50M,clk,reset,forbid, call_up_1,call_up_2,call_up_3, call_up_4,call_up_5, call_down_2,call_down_3,call_down_4, call_down_5,call_down_6, request_1,request_2,request_3, request_4,request_5,request_6, //outputports: out,LiftState,over_alarm,count_out,count );//outputports:output[6:0]out;//输出楼层output[6:0]LiftState;//输出电梯状态outputover_alarm;//出错output[6:0]count_out;//计数器输出,便于我控制开关门的状态显示output[2:0]count;//计数器//inputports:inputcp_50M;inputclk,reset,call_up_1,call_up_2,call_up_3,call_up_4,call_up_5,call_down_2,call_down_3,call_down_4,call_down_5,call_down_6,request_1,request_2,request_3,request_4,request_5,request_6; inputforbid; //pos与Posout的关系:当前状态一改变,pos立即作相应改变,而PosOut则是当前状态在要变到下一状态的瞬间 //,将PosOut作相应改变。如从WAIT切换到第一个UP时,pos立即加一,而PosOut则要等到第一个UP //即将切换到第二个UP时,才加一。//这个说的简单一点,就是移位寄存器,便于对电梯状态的实时的控制 wireover_alarm; wire[6:0]out; wire[6:0]count_out;reg[5:0]pos,PosOut;reg[2:0]count;//门开后要持续5个时钟周期,用count来计数regDoorFlag;reg[1:0]UpDnFlag;reg[6:0]LiftState,NextState;//分别表示电梯的当前状态和下一状态wirereal_clk; //up_all,down_all,request_all分别用来合并向上请求的各信号,向下请求的各信号和停靠请求的各信号 //以便判断电梯在状态间如何转移时更简洁 reg[5:0]up_all,down_all,request_all; //定义电梯7种状态的符号常量parameterWAIT=7'b0000001,UP=7'b0000010,DOWN=7'b0000100,UPSTOP=7'b0001000,DOWNSTOP=7'b0010000,OPENDOOR=7'b0100000,CLOSEDOOR=7'b1000000; //定义楼层的符号常量parameterFLOOR1=6'b000001,FLOOR2=6'b000010,FLOOR3=6'b000100,FLOOR4=6'b001000,FLOOR5=6'b010000,FLOOR6=6'b100000;parameterTRUE=1'b1,FALSE=1'b0; //定义门打开和门关闭的符号常量parameterOPEN=1'b1,CLOSED=1'b0; //定义电梯上升,下降和静止的符号常量parameterUPFLAG=2'b01,DNFLAG=2'b10,STATIC=2'b00;assignreal_clk=(clk&(~forbid));//采用屏蔽时钟的方法来实现“电梯强制禁止运行”。方法虽然违反了“同步电路最好//没有时钟门控”的要求,但是在此只要“负面影响”不是很大还是可以接受的。 //将各上升请求信号实时地合并(6楼为顶层,无上升请求,考虑到通用性,将第4位填零)always@(call_up_1orcall_up_2orcall_up_3orcall_up_4orcall_up_5)up_all={1'b0,call_up_5,call_up_4,call_up_3,call_up_2,call_up_1}; //将各下降请求信号实时地合并(1楼为底层,无下降请求,考虑到通用性,将第1位填零)always@(call_down_2orcall_down_3orcall_down_4orcall_down_5orcall_down_6)down_all={call_down_6,call_down_5,call_down_4,call_down_3,call_down_2,1'b0}; //将各停靠请求信号实时地合并always@(request_1orrequest_2orrequest_3orrequest_4orrequest_5orrequest_6)request_all={request_6,request_5,request_4,request_3,request_2,request_1};always@(posedgereal_clkorposedgereset)if(reset)count<=0;elseif((NextState==OPENDOOR)&&(count<5))//orelseif(NextState==OPENDOOR)count<=count+1;//如果计数不到5且下一状态为OPENDOOR的话,继续计数elsecount<=0;//清零,以备下次计数//displaywhichfloortheelevatorisdisplay_decodeh1(cp_50M,PosOut,out,over_alarm);display_decode_counth2(cp_50M,count,count_out);//finitestatemachineinthestyleofthreesegments,三段式 //1stStateShiftalwaysblock,sequentialstatetransition,有限状态机第一段always@(posedgereal_clkorposedgereset)if(reset)beginLiftState<=WAIT;endelseLiftState<=NextState; //2ndStateShiftalwaysblock,combinationalconditionjudgement,有限状态机第二段always@(LiftStateorup_allordown_allorrequest_allorposorcountorUpDnFlag)case(LiftState)WAIT:begin if(request_all>0)//有停靠请求否beginif((request_all&pos)>0)//停靠请求中有当前楼层停靠请求否NextState=OPENDOOR;//有当前楼层请求,则下一状态转开门elseif(request_all>pos)//有当前楼层之上的停靠请求否(优先向上的请求)NextState=UP;//有则,下一状态转上升elseNextState=DOWN;//只有当前楼层之下的停靠请求,下一状态转下降 endelseif((up_all&pos)||(down_all&pos))//上下请求中有当前楼层请求否beginNextState=OPENDOOR;endelseif((up_all>pos)||(down_all>pos))//上下请求中有当前楼层之上的请求否NextState=UP;elseif(up_all||down_all)//上下请求中有当前楼层之下的请求否NextState=DOWN;elseNextState=WAIT;//无任何请求,继续处于WAIT模式endUP:begin if((request_all&pos)||(up_all&pos))//停靠或上升请求中有当前楼层的请求否NextState=UPSTOP;//有,下一状态转为UPSTOP(停靠后要1s才开门,UPSTOP即为这1s的过渡期)elseif((request_all>pos)||(up_all>pos))//停靠或上升请求中有当前楼层之上的请求否NextState=UP;elseif(down_all>0)//有下降请求否beginif((down_all>pos)&&((down_all^pos)>pos))//下降请求中有当前楼层的请求否NextState=UP;elseif((down_all&pos)||(pos<FLOOR6))//其实这样做意义不大,只是使上下标志提前变化NextState=UPSTOP;elseif((down_all&pos)&&(pos==FLOOR6))//事实上不满足第一条件的话,电梯根本不会到达第四层NextState=DOWNSTOP;else//下降请求中只有当前楼层之下的请求NextState=DOWN;endelseif(request_all||up_all)//只有当前楼层之上的停靠或上升请求否NextState=DOWN;elseNextState=WAIT;//无任何请求,转为WAIT模式end //DOWN的状态转移请参见UP的状态转移DOWN:begin if((request_all&pos)||(down_all&pos))NextState=DOWNSTOP;elseif(((request_all&FLOOR1)<pos&&(request_all&FLOOR1))||((request_all&FLOOR2)<pos&&(request_all&FLOOR2))||((request_all&FLOOR3)<pos&&(request_all&FLOOR3))||((request_all&FLOOR4)<pos&&(request_all&FLOOR4))||((request_all&FLOOR5)<pos&&(request_all&FLOOR5))||((request_all&FLOOR6)<pos&&(request_all&FLOOR6)))NextState=DOWN;elseif(((down_all&FLOOR1)<pos&&(down_all&FLOOR1))||((down_all&FLOOR2)<pos&&(down_all&FLOOR2))||((down_all&FLOOR3)<pos&&(down_all&FLOOR3))||((down_all&FLOOR4)<pos&&(down_all&FLOOR4))||((down_all&FLOOR5)<pos&&(down_all&FLOOR5))||((down_all&FLOOR6)<pos&&(down_all&FLOOR6)))NextState=DOWN;elseif(up_all>0)beginif(((up_all&FLOOR1)<pos&&(up_all&FLOOR1))||((up_all&FLOOR2)<pos&&(up_all&FLOOR2))||((up_all&FLOOR3)<pos&&(up_all&FLOOR3))||((up_all&FLOOR4)<pos&&(up_all&FLOOR4))||((up_all&FLOOR5)<pos&&(up_all&FLOOR5))||((up_all&FLOOR6)<pos&&(up_all&FLOOR6)))NextState=DOWN;elseif((up_all&pos)&&(pos>FLOOR1))NextState=DOWNSTOP;elseif((up_all&pos)&&(pos==FLOOR1))NextState=UPSTOP;elseNextState=UP;endelseif(request_all||down_all)NextState=UP;elseNextState=WAIT;endUPSTOP:begin NextState=OPENDOOR;//停靠1时钟周期后开门endDOWNSTOP:begin NextState=OPENDOOR;//停靠1时钟周期后开门endOPENDOOR:beginif(count<5)//开门不足5周期,则继续转移到开门状态NextState=OPENDOOR;elseNextState=CLOSEDOOR;//开门5周期后,关门endCLOSEDOOR:beginif(UpDnFlag==UPFLAG)//开门关门前电梯是处于上升状态吗begin if((request_all&pos)||(up_all&pos))//上升或停靠请求中有当前楼层的请求否,有可能关门的瞬间又有新的请求NextState=OPENDOOR;elseif((request_all>pos)||(up_all>pos))//上升或停靠请求中有当前楼层之上的请求否NextState=UP;elseif(down_all>0)//有下降请求否beginif((down_all>pos)&&((down_all^pos)>pos))NextState=UP;//有当前楼层之上的下降请求,则下一状态转移上升elseif((down_all&pos)>0)//有当前楼层的下降请求信号,且更上层无下降请求NextState=OPENDOOR;else//只有低于当前层的下降请求NextState=DOWN;endelseif(request_all||up_all)//上升和停靠请求中有当前层的请求且只有当前层下的请求NextState=DOWN;elseNextState=WAIT;//无任何请求,转为WAIT模式end //请参考UpDnFlag=UPFLAG的注释 elseif(UpDnFlag==DNFLAG)beginif((request_all&pos)||(down_all&pos))NextState=OPENDOOR;elseif(((request_all&FLOOR1)<pos&&(request_all&FLOOR1))||((request_all&FLOOR2)<pos&&(request_all&FLOOR2))||((request_all&FLOOR3)<pos&&(request_all&FLOOR3))||((request_all&FLOOR4)<pos&&(request_all&FLOOR4))||((request_all&FLOOR5)<pos&&(request_all&FLOOR5))||((request_all&FLOOR6)<pos&&(request_all&FLOOR6)))NextState=DOWN;elseif(((down_all&FLOOR1)<pos&&(down_all&FLOOR1))||((down_all&FLOOR2)<pos&&(down_all&FLOOR2))||((down_all&FLOOR3)<pos&&(down_all&FLOOR3))||((down_all&FLOOR4)<pos&&(down_all&FLOOR4))||((down_all&FLOOR5)<pos&&(down_all&FLOOR5))||((down_all&FLOOR6)<pos&&(down_all&FLOOR6)))NextState=DOWN;elseif(up_all>0)beginif(((up_all&FLOOR1)<pos&&(up_all&FLOOR1))||((up_all&FLOOR2)<pos&&(up_all&FLOOR2))||((up_all&FLOOR3)<pos&&(up_all&FLOOR3))||((up_all&FLOOR4)<pos&&(up_all&FLOOR4))||((up_all&FLOOR5)<pos&&(up_all&FLOOR5))||((up_all&FLOOR6)<pos&&(up_all&FLOOR6)))NextState=DOWN;elseif((up_all&pos)>0)NextState=OPENDOOR;elseNextState=UP;//endelseif(request_all||down_all)NextState=UP;elseNextState=WAIT;//end //请参考WAIT模式的注释elsebeginif(request_all>0)beginif((request_all&pos)>0)NextState=OPENDOOR;elseif(request_all>pos)NextState=UP;elseNextState=DOWN;endelseif((up_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论