Verilog实现智能电梯控制器(2)

2019-03-22 18:56

带液晶显示驱动的智能电梯控制器

elevator_controllercp_50Mclkresetforbidcall_up_1call_up_2call_up_3call_up_4call_up_5call_down_2call_down_3call_down_4call_down_5call_down_6request_1request_2request_3request_4request_5request_6out[6..0]LiftState[6..0]over_alarmcount_out[6..0]count[2..0]malueeinst3端口声明:

Input Port:

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为复位信号 Output Port:

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:

frequence_divcp_50Mcp_1inst2端口说明: Input ports: cp_50M; output ports: cp_1;

- 6 -

带液晶显示驱动的智能电梯控制器

(3)电梯状态仲裁器arbitrator:

arbitratorelevator_state[6..0]count_in[2..0]open_enablestop_enableup_enabledown_enableclose_enableinst5 端口说明: Input ports: elevator_state; count_in; output ports:

output open_enable,stop_enable,up_enable,down_enable,close_enable; (4)LCD驱动模块DE2_Default:

DE2_Defaultopen_enablestop_enableup_enabledown_enableclose_enableCLOCK_50KEYinst4LCD_ONLCD_BLONLCD_RWLCD_ENLCD_RSLCD_DATA[7..0] 端口说明: Input ports:

input open_enable,stop_enable,up_enable,down_enable,close_enable; input CLOCK_50; // 50 MHz input KEY; output ports:

inout [7:0] LCD_DATA; // LCD Data bus 8 bits output LCD_ON; // LCD Power ON/OFF output LCD_BLON; // LCD Back Light ON/OFF output LCD_RW; // LCD Read/Write Select, 0 = Write, 1 = Read output LCD_EN; // LCD Enable output LCD_RS;// LCD Command/DataSelect, 0= Command, 1 = Data

2.2 模块设计过程

现在我简要的说明一下我的模块的设计过程:

(1)电梯主控制器模块elevator_controller:

此段智能电梯控制器由三个重要部分组成的。

(a)信号并置部分,完成对5路向上请求、5路向下请求、6路内部请求的信号并置,化繁为简。

(b)三段式有限状态机部分。在有请求的情况下,电梯控制器还要根据电梯的当前状态

- 7 -

带液晶显示驱动的智能电梯控制器

和当前的楼层去判断电梯的下一步该如何运作。

(c)计数器部分。完成电梯的开门、关门的时间管理。

(2)分频模块frequence_div:

这段分频器完成对50Mhz的1分频操作。采用传统的“一半就翻转”的计数技巧。

(3)电梯状态仲裁器arbitrator:

完成电梯信号到LCD控制的信号转换。其中也采用了“电梯主控制器”中的信号并置的思想。这一点可以在我的程序中十分清楚的看到,在此我不再赘述。

(4)LCD驱动模块DE2_Default:

这个模块我是采用“ 拿来主义”的。因为是DE2板子提供的源程序,所以编写起来还算比较轻松。就只加了一个“ 根据不同的输入产生不同的输出 ”的模块。中途还遇到了字符型液晶不能更新的问题,不过在同学的帮助下,最终还是解决了。

(5)数码管译码模块:

(6)数码管时间译码模块:

以上两个模块一起讲比较合适,因为它们都是采用了同样的译码原则,只不过条件不一样而已。我们可以针对不同的输入根据自己的意愿把它译成同样的数码显示。

以上的模块设计过程说的比较的简约。主要是大概的介绍了我的各个模块的基本设计原理,希望读者能从程序中仔细体会这种原理。

2.3 波形仿真

(1)当电梯处于初始状态时,电梯在高层有向下的请求时:

- 8 -

带液晶显示驱动的智能电梯控制器

(2)LCD的显示由于数据太多,所以单独显示如下:

首先显示:“ it is static.. ” 随后会显示:

- 9 -

带液晶显示驱动的智能电梯控制器

以上的字符发送到液晶显示模块之后,可以显示“ door is rising.. ” 随后会显示:

可以显示“ it is static.. ”

以上的字符发送到液晶显示模块之后,可以显示“ door is opening.. ” 随后会显示:

- 10 -


Verilog实现智能电梯控制器(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:大学生数学建模竞赛

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: