Verilog eda语言设计电梯
更新时间:2023-12-02 06:09:01 阅读量: 教育文库 文档下载
- verilog推荐度:
- 相关推荐
基于verilog语言的电梯设计
2)、系统描述;
1、设定电梯控制器适用的楼层为8层.
2、在电梯的内部有一个控制面板,它负责按下请求到的楼层,并且显示当前尚未完成的目的地请求,当到达该楼层以后自动撤销本楼层的请求,即将面板灯熄灭.
3、除1层和7层分别只有上/下按钮外,每个楼层(电梯门口旁)的召唤面板都有两个按钮,分别指示上楼和下楼请求。当按下后,对应按钮灯亮。如果电梯已经到达该楼层,按钮灯熄灭。
4、电梯的外部面板会显示电梯当前所在的楼层,及上行还是下行(暂停显示刚才运行时的状态).当电梯在运行时,对应的楼层灯间固定显示一段时间进入下一楼层;在暂停时,灯一直在该楼层保持亮的状态。
5、电梯调度方案:电梯向一个方向运行时,只对本方向前方的请求进行应答,直到本方向前方无请求时,才对反方向的请求进行应答。当前内部控制面板上有的请求,只要经过所在楼层均会立即响应.在所有内部外部请求都已完成后,电梯转入等待。
电梯模型:(如下附图)
第7层 第6层 电梯内部的控制面板, 显示信息有:电梯当前的位置和电梯当前的运行方向(上\下),以及请求到达的楼层 控制信息有:请求要到达的目的楼层 第5层 第4层 电梯 第3层 第2层 第1层 每楼层的召唤按钮面板, 显示信息有:当前电梯所在位置(楼层)和电梯的运行方向(上\下) 控制信息:使用电梯的请求(向上或向下) 3)、算法设计; 1、电梯基本组成部分及其实现: (1) FLOOR:记录电梯所处楼层的记数器.
用模8计数器实现,由001~111的加减记数来表示电梯所在楼层的变化. (2) RB:电梯运行状态寄存器组.
用一位寄存器来表示电梯当前是运行还是暂停,再用一位寄存器表示当前或刚才的运行方向,这样就可以在电梯停止时也可以判断电梯刚才的状态,从而确定下个时刻电梯的后续方向.对于FLOOR,我们通过三个LED显示.
(3)RC:电梯目的地信息寄存器,记录电梯还有哪些要去楼层的任务. 每个楼层对应一个状态触发器,同时控制一个LED显示.
(4)RD: 各个楼层召唤信息寄存器,它记录了各楼层还有哪些向上向下的请求. 每个楼层对应两个状态触发器,同时控制两个LED显示向上向下请求. (5)CALL:电梯各个楼层的召唤面板,用户通过它发出向上向下的请求; (6)DESTINATION:电梯目的地指定命令面板,用户通过它申请要去的楼层;
(7)CONTRAL:电梯的集中控制器。
2、电梯控制基本结构图:
CALL LED LED RD FLOOR CONTROL LED RC RB DESTINATIONN LED
3、电梯工作过程的具体描述:
a)、当电梯开始启动的时候,将当前所处的楼层置为第一层,电梯为暂停状态,方向向上,然后等待控制器的调度.
b)、等待过程当中(FLOOR保持在该楼层),首先检测RC和RD,判断当前楼层(第i层)以上的楼层是否发出召唤或者已经有人已经发请求,若有则向上运行;否则以同样的方法判断是否向下运行;若不向下运行则重复等待状态. 保持原状态循环进行2操作直到检测到有向上或向下的任务.
c)、若已经判明要向上运行,则首先使RB中的运行/暂停触发器置为运行,且标志向上运行,控制LED在该楼层亮T1时间后将所在楼层加1,这时新的当前楼层(第i+1层)灯亮起,接
着电梯检索RC和RD,判断当前楼层是否发出向上召唤或者已经有人已经发出目的地为第i+1层的请求,若有则在第i+1层停靠;否则检索RC和RD,判断第i+1层以上的楼层是否发出召唤或者已经有人已经发出目的地为第i+1层以上的请求,若有则向上运行;否则(必定是有第i+1层向下的请求)在第i+1层.若不在当前的第i+1层停靠,就使灯闪烁,继续3中开始的操作.如果停靠就修改运行状态为停止,撤销所在楼层的召唤请求和目的地任务,接受用户的目的地请求,控制电梯在T2时间后电梯进入2中的等待状态.
注释:
、只要不是当前暂停在的楼层的用户发出的召唤命令都存入RD,以供控制器检索和判断.
、只要不是当前暂停在的楼层的用户发出的目的地请求都存入RC,供运行过程当中
控制器的检索和判断。
BACK
************************************************************
4、电梯控制流程图:
开始初始化电梯状态和控制信息等待所在i层以上有召唤或有电梯内面板目的地?YESNO所在i层以下有召唤或有电梯内面板目的地?YESNO向上运行;i ? i+1更新状态信息向下运行;i ? i-1更新状态信息NO第i层为电梯目的地或第i层有向上请求?YES所在i层以上有召唤或有电梯内面板目的地?NOYES第i层为电梯目的地或第i层有向下请求?NO在第i层停;乘客上下电梯更新状态信息YES所在i层以下有召唤或有电梯内面板目YES的NO在第i层停;乘客上下电梯更新状态信息
BACK
********************************************************* 5、系统控制器ASM图:
Reset=0ASM图s00000rst=1s10001ce=1;rst=0;ce_Count=0;Sel_Count=00;s2noK1?yess3up_d=0;stop_r=1;ce=0;00110010ce=1;ce_Count=0;Sel_Count=01;K2?yess9up_d=1;stop_r=1;ce=0;no1001s4ce_Count=1;0100s101010ce_Count=1;s5ce_Count=0;inc_Floor=1;0101s111011ce_Count=0;red_Floor=1;s60110s121100inc_Floor=0;sel_Con=10;red_Floor=0;sel_Con=11;s7noK3?yes0111nos1311sel_Con=00;K4?sel_Con=01;yesyesK1?K2?s81000nos14ce=1;stop_r=0;ce_Count=11110noce=1;stop_r=0;ce_Count=1
BACK
************************************************************ 4)、硬件实现;
为了更好地实现电梯的功能我们将其划分为数据处理单元和控制单元。控制器通过control模块实现它统一向其它各个模块发出控制信号,并且接收condition和counter模块的反馈信号,使得个子运算按照算法设计中的顺序有序的进行,在S0~S14的状态之间进行合理的跳转,从而完成电梯的各项逻辑功能。
下面分别简述使用verilog语言实现的各个模块的功能及其接口。
(1)、destination:该模块是为了描述电梯内的目的请求的记录和撤销。 input:
set_dest:当按下对应楼层的目的地请求且当前电梯来停在cur_floor时,便可以记录这个
请求。
rst:在电梯进入初始状态时,撤销记录中的目的地请求。
ce:在电梯进入暂停在cur_floor状态时ce=1;控制撤销cur_floor的目的地请求,并不记录
在当前状态下该楼层的目的地请求。
cur_Floor:当前楼层作为判断的条件。
output:
get_dest: 通过输出LED显示当前未完成的目的地请求。
源代码如下:
module destination(set_dest,rst,ce,cur_Floor,get_dest);
input [6:0] set_dest; input [2:0] cur_Floor; input rst,ce;
output [6:0] get_dest; reg [6:0] get_dest;
always @ (rst or ce or set_dest[0] or cur_Floor)
begin
if(rst==1)
get_dest[0]=0;
else begin
if(set_dest[0]==0) begin
if(ce==0||cur_Floor!=1)
get_dest[0]=1;
电梯不在1楼,目的地为1
else
get_dest[0]=0;
电梯在1楼 目的地不显示
end else begin
if(ce==1&&cur_Floor==1) get_dest[0]=0;
end
end end
always @ (rst or ce or set_dest[1] or cur_Floor) begin
if(rst==1)初始化
get_dest[1]=0;
没有请求
else if(set_dest[1]==0) begin
if(ce==0||cur_Floor!=2)
get_dest[1]=1;
else
get_dest[1]=0;
end else begin
if(ce==1&&cur_Floor==2) get_dest[1]=0;
end
end
always @ (rst or ce or set_dest[2] or cur_Floor) begin
if(rst==1)
get_dest[2]=0;
else if(set_dest[2]==0) begin
if(ce==0||cur_Floor!=3)
get_dest[2]=1;
else
get_dest[2]=0;
end else begin
if(ce==1&&cur_Floor==3) get_dest[2]=0;
end
end
always @ (rst or ce or set_dest[3] or cur_Floor) begin
end
if(rst==1)
get_dest[3]=0;
else if(set_dest[3]==0) begin
if(ce==0||cur_Floor!=4)
get_dest[3]=1;
else
get_dest[3]=0;
end else begin
if(ce==1&&cur_Floor==4) get_dest[3]=0;
end
always @ (rst or ce or set_dest[4] or cur_Floor) begin
if(rst==1)
get_dest[4]=0;
else if(set_dest[4]==0) begin
if(ce==0||cur_Floor!=5)
get_dest[4]=1;
else
get_dest[4]=0;
end else begin
if(ce==1&&cur_Floor==5) get_dest[4]=0;
end
end
always @ (rst or ce or set_dest[5] or cur_Floor) begin
if(rst==1)
get_dest[5]=0;
else if(set_dest[5]==0) begin
if(ce==0||cur_Floor!=6)
get_dest[5]=1;
else
get_dest[5]=0;
end else begin
if(ce==1&&cur_Floor==6) get_dest[5]=0;
end
end
end
always @ (rst or ce or set_dest[6] or cur_Floor) begin
if(rst==1)
get_dest[6]=0;
else if(set_dest[6]==0) begin
if(ce==0||cur_Floor!=7)
get_dest[6]=1;
else
get_dest[6]=0;
end else begin
if(ce==1&&cur_Floor==7) get_dest[6]=0;
end
endmodule
(2)、call:该模块是为了描述电梯外的召唤的记录和撤销。 input:
set_call:当按下对应楼层的召唤请求且当前电梯未停在cur_floor,便可以记录这个召唤。 rst:当电梯进入初始状态时,撤销目的地面板上的请求。
ce:在电梯进入暂停在cur_floor的状态时,控制撤销cur_floor 的所在所在召唤请求,并
不记录当前状态下该楼层的召唤。
cur_Floor:当前楼层作为判断的条件。
output:
get_call: 通过输出LED显示当前未完成的目的地请求。
源代码如下:
module call(set_call,rst,cur_Floor,ce,get_call);
input [11:0] set_call; input [2:0] cur_Floor; input rst,ce;
output [11:0] get_call; reg [11:0] get_call;
always @ (rst or ce or set_call[0] or cur_Floor) begin
if(rst==1)
get_call[0]=0;
else if(set_call[0]==0) begin
if(ce==0||cur_Floor!=1)
get_call[0]=1;
else
get_call[0]=0; end else begin
if(ce==1&&cur_Floor==1)
get_call[0]=0;
end
end
always @ (rst or ce or set_call[1] or cur_Floor) begin
if(rst==1)
get_call[1]=0;
else if(set_call[1]==0) begin
if(ce==0||cur_Floor!=2)
get_call[1]=1;
else
get_call[1]=0; end else begin
if(ce==1&&cur_Floor==2) get_call[1]=0;
end
end
always @ (rst or ce or set_call[2] or cur_Floor) begin
if(rst==1)
get_call[2]=0;
else if(set_call[2]==0)
begin
if(ce==0||cur_Floor!=2)
get_call[2]=1;
else
get_call[2]=0;
end else begin
if(ce==1&&cur_Floor==2) get_call[2]=0;
end
end
always @ ( rst or ce or set_call[3] or cur_Floor) begin
if(rst==1)
get_call[3]=0;
else if(set_call[3]==0) begin
if(ce==0||cur_Floor!=3)
get_call[3]=1;
else
get_call[3]=0;
end else begin
if(ce==1&&cur_Floor==3) get_call[3]=0;
end
end
always @ ( rst or ce or set_call[4] or cur_Floor) begin
if(rst==1)
get_call[4]=0;
else if(set_call[4]==0) begin
if(ce==0||cur_Floor!=3)
get_call[4]=1;
else
get_call[4]=0;
end else begin
if(ce==1&&cur_Floor==3) get_call[4]=0;
end
end
always @ ( rst or ce or set_call[5] or cur_Floor) begin
if(rst==1)
get_call[5]=0;
else if(set_call[5]==0) begin
if(ce==0||cur_Floor!=4)
get_call[5]=1;
else
get_call[5]=0;
end else begin
if(ce==1&&cur_Floor==4) get_call[5]=0; end
end
always @ ( rst or ce or set_call[6] or cur_Floor) begin
if(rst==1)
get_call[6]=0;
else if(set_call[6]==0) begin
if(ce==0||cur_Floor!=4)
get_call[6]=1;
else
get_call[6]=0;
end else begin
if(ce==1&&cur_Floor==4) get_call[6]=0;
end
end
always @ ( rst or ce or set_call[7] or cur_Floor) begin end
always @ (rst or ce or set_call[8] or cur_Floor) begin
if(rst==1)
get_call[8]=0; if(rst==1)
get_call[7]=0;
else if(set_call[7]==0) begin
if(ce==0||cur_Floor!=5)
get_call[7]=1;
else
get_call[7]=0;
end else begin
if(ce==1&&cur_Floor==5) get_call[7]=0;
end
else if(set_call[8]==0) begin
if(ce==0||cur_Floor!=5)
get_call[8]=1;
else
get_call[8]=0;
end else begin
if(ce==1&&cur_Floor==5) get_call[8]=0;
end
end
always @ (rst or ce or set_call[9] or cur_Floor) begin
if(rst==1)
get_call[9]=0;
else if(set_call[9]==0) begin
if(ce==0||cur_Floor!=6)
get_call[9]=1;
else
get_call[9]=0;
end else begin
if(ce==1&&cur_Floor==6) get_call[9]=0;
end
正在阅读:
Verilog eda语言设计电梯12-02
人物描写作文课件ppt08-07
七年级6月月考英语试卷07-02
image j对SDS-PAGE灰度分析定量蛋白浓度08-24
2018年人教版道德与法治七年级下册第四单元《走进法治天地》 单06-13
2019版高中物理一轮复习 第八章恒定电流 第5讲 实验:测定电源的电动势和内阻08-28
说说我自己作文600字女生06-27
立春作文500字06-16
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 电梯
- Verilog
- 语言
- 设计
- eda
- 南京大学人文社会科学研究成果奖励办法
- 2019年五年级品德与社会上册 杰出的智者教案1 北师大版
- 数据库原理与应用-期末考试复习题
- 小学一年级数学下册期中考试试卷6套(北师大版) - 图文
- 手续办理流程及所需资料汇总
- 2018年大学生冬季运动会口号集锦
- 山东省嘉祥县第一中学高中化学3.3《羧酸酯》第一课时《羧酸》教案新人教版选修5
- 乡镇街道安全监管工作指导手册 - 图文
- 第六章《我们生活的大洲 - 亚洲》重要知识学习总结要点总结
- 2019四川省遂宁市安居育才卓同国际学校学年高二生物上学期9月月考试题语文
- 2019春九年级化学下册第十二单元化学与生活课题3有机合成材料习题练新版新人教版
- otc促销方案
- 科园实验学校中学部七年级语文下册第六单元第23课毛泽东词二首沁园春雪学案无答案新版苏教版
- 部编版三年级语文上册第四单元 基础知识必记
- 2018年北师大版九年级数学上册《第三章概率的进一步认识》检测题(有答案)
- 拼妈时代 如何做个好妈妈
- 领导讲话稿之创国卫讲话稿
- 外科学知识点精华笔记(执业医+主治)必备之(106)
- 斑羚飞渡读后感100字
- 重庆市安全生产监督管理局关于印发重庆市一般劳动防护用品生产和