基于FPGA 的六层电梯控制系统
计要求所决定。初始化状态为1楼等待门是关闭的。各状态机之间转换图如图2.5:
Doorwait4
图2-5 状态机转换图
2.3 设计的VHDL实现
2.3.1 控制器实体设计
首先考虑输入端口,一个异步复位端口reset,用于在系统不正常时回到初始状态;在电梯外部,必须有升降请求端口,一层是最低层,不需要有下降请求,六层是最高层,不需要有上升请求[3],二三四五层则上升、下降请求端口都有;在电梯的内部,应该设有各层停留的请求端口:一个电梯时钟输入端口,该输入时钟以1秒为周期,用于驱动电梯的升降及开门关门等动作;另有一个按键时钟输入端口,时钟频率比电梯时钟高。
其次是输出端口,有升降请求信号以后,就得有一个输出端口来指示请求是否被响应,有请求信号以后,该输出端口输出逻辑‘l’。被响应以后则恢复逻辑‘0’;同样,在电梯内部也应该有这样的输出端口来显示各层停留是否被响应;在电梯外部,需要一个端口来指示电梯现在所处的位置;电梯开门关门的状态也能用一个输出端口来指示;为了观察电梯的运行是否正确,可以设置一个输出端口来指示电梯的升降状态。
10
基于FPGA 的六层电梯控制系统
2.3.2 控制器结构体设计
首先说明一下状态。状态机设置了7个状态,分别是电梯停留在l层(stoponl)、开门(dooropen)、关门(doorclose)、开门等待4秒(doorwait4)、上升(up)、下降(down)和停止(stop)。在实体说明定义完端口之后,在结构体architecture和begin之间需要有如下的定义语句,来定义状态机。 type lift_state is
(stoponl,dooropen,doorclose, doorwait4,up,down,stop): signal mylift:lift_state:
在结构体中,设计了两个进程互相配合,一个是状态机进程作为主要进程,另外一个是信号灯控制进程作为辅助进程。状态机进程中的很多判断条件是以信号灯进程产生的信号灯信号为依据的,而信号灯进程中信号灯的熄灭又是由状态机进程中传出的clearup和cleardn信号来控制。
在状态机进程中,在电梯的上升状态中,通过对信号灯的判断,决定下一个状态是继续上升还是停止;在电梯下降状态中,也是通过对信号灯的判断,决定下一个状态是继续下降还是停止;在电梯停止状态中,判断是最复杂的,通过对信号的判断,决定电梯是上升、下降还是停止。
在信号灯控制进程中,由于使用了专门的频率较高的按键时钟,所以使得按键的灵敏度增大,但是时钟频率不能过高,否则容易使按键过于灵敏。(由于时间限制本设计并未考虑按键消抖)按键后产生的点亮的信号灯(逻辑值为‘1’)用于作为状态机进程中的判断条件,而clearup和cleardn信号为逻辑‘l’使得相应的信号灯熄灭。
3 器件选型
3.1 FPGA芯片选型
主控芯片选用Altera公司ACEX系列FPGA芯片EP1K30TC144-3, Altera公司是20世纪90年代以来发展较快的可编程逻辑器件生产厂家,在激烈的市场竞争中, 凭借其雄厚的技术实力,独特的设计构思和功能齐全的芯片系列,跻身于世界最大的器件供应商之列。EP1K30TC144-3芯片属于Altera公司的ACEX 1K系列,集成典型逻辑门数达30000个, 工作频率最高可达178.6MHz,最小传输延时为
11
基于FPGA 的六层电梯控制系统
5.0ns,它将查找表(LUT)与嵌入式阵列块(EAB)结合起来,提供了一种具有高效管芯的低成本结构。该芯片支持1.8到2.5V供电电压,其I/O接口支持多电压的连接:1.8V,2.5V,3.3V,5V仅在外接电阻时可承受,还提供可编程的节能工作模式。在编程工艺上,采用SRAM(静态随机存储器)工艺,可插写上万次。这些特点使该芯片适用于复杂的逻辑功能和存储功能的应用场合。
3.2 功能模块
3.2.1 主控器模块
如图3-1:
电梯主控制模块端口说明:buttonclk 按钮时钟信号 reset 复位键 f2upbutton 二楼上楼按钮 f4upbutton 四楼上楼按钮 f2dnbutton 二楼下楼按钮 f4dnbutton 四楼下楼按钮
图3-1 电梯主控制模块
liftclk 电梯时钟信号 f1upbutton 一楼上楼按钮 f3upbutton 三楼上楼按钮 f5upbutton 五楼上楼按钮 f3dnbutton 三楼下楼按钮 f5dnbutton 五楼下楼按钮
12
基于FPGA 的六层电梯控制系统
f6dnbutton 六楼下楼按钮 stop1button 电梯内部一楼按钮 stop2button 电梯内部二楼按钮 stop3button 电梯内部三楼按钮 stop4button 电梯内部四楼按钮 stop5button 电梯内部五楼按钮 stop6button 电梯内部六楼按钮 fuplight[6..1] 每楼层上升指示灯 fdnlight[6..1] 每楼层下降指示灯 stoplight[6..1] 电梯内部楼层指示灯 position[2..0] 楼层位置显示 doorlight 电梯门状态显示 udsig 电梯上升下降显示
3.2.2 分频器模块
如图3-2:
图3-2 分频器模块
模块端口说明:
clk_in 电源输入端 div_out 分频后时钟输出端
3.2.3 译码器模块
如图3-3:
图3-3译码器模块
aaa[2..0] 楼层位置输出端 bbb[3..0] 译码输出端 译码器逻辑功能表如表3-1
13
基于FPGA 的六层电梯控制系统
表3-1 译码器逻辑功能表
3.2.4 数据选择器模块
如图3-4:
图 3-4 数据选择器模块
数据选择器模块端口说明:
input[3..0] 译码器输入端 output[6..0] 数据选择器输出端 译码器逻辑功能表如表3-2
表3-2 译码器逻辑功能表
14