本资源提供了一个基于FPGA实现电梯控制系统的详细设计方案,包括原理图、Verilog代码和项目文件。使用Quartus 13.0进行硬件描述语言编程与仿真,有助于深入理解数字逻辑设计在实际应用中的作用。适合电子工程及计算机专业的学生或工程师参考学习。
基于FPGA设计的智能电梯控制器设计WORD文档以及quartus13.0工程Verilog源码文件可以作为课程设计参考材料。
**1.1 设计要求**
- 楼层高度不低于6,根据降低运行成本的原则,需要实现一个以方向优先为策略的电梯调度算法。
- 要求能够通过按键模拟对电梯的操作控制,并且使用数码管显示当前楼层(从1到6),同时用发光二极管或数码管来展示电梯的工作状态(上升、下降、开门、关门和静止)。此外,还应具备锁闭功能以禁止电梯运行。
- 绘制出电梯控制器的状态机图并编写相应的状态编码方案。
- 使用Verilog语言完成设计描述,并将其下载到实验板上进行调试。同时,在实际操作中适当增加一些符合现实的控制限制条件。
- 撰写一份详细的设计性实验报告,打印所有层次的源文件和仿真波形,并对结果作简要说明。最后总结本次试验的心得体会、感想及建议。
**1.2 设计思路**
电梯的工作状态被划分为三种:上升、下降以及停留(包括开门、关门或禁止)。每种状态用二进制编码表示,如00代表上升,01为下降,而10则用于标识停留。考虑到六层楼的情况,在每一楼层外部均设有上下请求按钮,并且电梯内部也配备了一到六层的呼叫按钮以及持续开启和关闭门的功能。
通过按键输入来设定各种变量值以表示不同的请求需求,然后使用case语句根据不同楼层进行条件判断处理。每个层次分为两部分响应:当有特定楼层的需求时将执行开门动作;反之,则根据电梯当前是在上升、下降还是停留状态作出相应反应(除了第一层和第六层外,其他各层的特殊性在于它们只有向上或向下的请求)。主要通过按键实现对六层楼以及上下方向的选择操作。同时用四个LED灯分别表示四种工作模式:上升、下降、静止及禁止运行,并使用数码管显示电梯当前所在楼层。
对于锁闭功能的操作,当用户同时按下上行和下行两个按钮时,系统会自动将电梯送回一楼并停止响应任何请求信号。
之后对原有设计进行了改进,在LCD显示屏上区分了开门与关门的区别。主要是通过进一步细分停留状态,并在这些状态下控制LCD显示以明确指示当前的开启或关闭门动作的状态。
Verilog代码示例如下:
```verilog
module dianti(
output ledup, leddown, ledforbid, ledstay,
output [6:0] out,
input A, B, clock, c1, c2, c3, c4, c5, c6,
inout [7:0] LCD_DATA,
output LCD_EN, LCD_RS, LCD_RW, LCD_ON,LCD_BLON,test
);
output ledup; //上升指示灯输出信号
output leddown; //下降指示灯输出信号
output ledforbid; //禁止运行的LED状态输出
output LEDstay ;//静止的LED状态输出
reg [4:0] floor1;
reg [5:1] floor2;
reg [5:0] floor3;
reg [3:0] i;
reg [1:0] s;
wire clk_out;
Clock c(clock,clk_out); //分频
LCD d(clock,control,LCD_DATA,LCD_EN, LCD_RS, LCD_RW, LCD_ON, LCD_BLON);
always @(posedge clk_out) begin
t <= t + 4b0001;
ledup<=(s==2b01 && !(A==1 && B==1)); //电梯上升中
leddown<=(s==2b10 &&!(A==1 && B==1));//电梯下降中
ledforbid<=(A==1 && B==1); // 电梯处于锁定
ledstay<=(s==2b00&&!(A==1 && B==1)); //电梯停留
if( A == 1 && B == 0) begin // request up
if(c5 == 1 ) floor1[4] <= 1;
else if (c4 == 1) floor1[3] <= 1;
...
```
以上是基于FPGA的智能电梯控制器设计的主要内容和相关代码示例。