1.控制模块
主控制器模块用三段式状态机的描述方法来实现电梯在7个状态间的正确转移,采用三段式不仅可以使有限状态机(FSM)描述清晰简洁,易于维护和附加时序约束,便于综合器和布局布线器更好地优化设计,而且可以有效地消除一段式或两段式描述法中可能带来的组合逻辑输出毛刺。自动控制系统的方框图如图5-108所示,设计步骤如下:
(1)创建工程并设计输入:
①在E:\project\目录下,新建名为LIFT的新工程。器件族类型(Device Family)选择Spartan-3E,器件型号(Device)选XC3S500EFG320-4,综合工具(Synthesis Tool)选XST(VHDL/Verilog),仿真器(Simulator)选ISim(VHDL/Verilog)。
②设计输入。在源代码窗口中单击鼠标右键,在弹出的快捷菜单中选择NewSource,在弹出的对话框中选择Ver-ilog Moudle,在右端的File name中输入源文件名LIFT,再依次单击Next-Next-Finish,然后在弹出的源代码编辑框内输入源代码并保存即可。
Verilog代码详见光盘附件5-25。
(2)控制模块的功能仿真 在源代码窗口中单击鼠标右键,在弹出的快捷菜单中选择NewSource,新建testbench文件,选择Verilog Test Fixture,然后单击next-next-finish,在弹出的testbench模板中编辑激励信号,如图5-109所示。
图5-108 电梯控制器自动控制系统方框图
图5-109 激励波形
最后得到的仿真波形如图5-110所示,调试波形如图5-111所示。
图5-110 仿真波形
图5-111 控制模块调试波形
由图5-110和图5-111所示的波形可知,当reset清0后,F1Up使得电梯处于开门状态,即OPENDOOR模式,这个过程有4s,处于优先级的状态,在此期间任何操作都无法响应。接着电梯会处于1s时间的关门状态(7’b1000000),电梯每上升一层楼需1s的时间,由激励波形可知,电梯会在第二层停下,处于上升停止的状态,即UPSTOP模式,然后又是4s的开门时间……
2.超载报警模块
超载报警模块的设计步骤如下:
(1)创建工程并设计输入:
①在E:\project\目录下,新建名为alarm的新工程。器件族类型(Device Family)选择Spartan-3E,器件型号(Device)选XC3S500E FG320-4,综合工具(Synthesis Tool)选XST(VHDL/Verilog),仿真器(Simulator)选ISim(VHDL/Verilog)。
②设计输入。在源代码窗口中单击鼠标右键,在弹出的快捷菜单中选择NewSource,在弹出的对话框中选择VerilogMoudle,在右端的Filename中输入源文件名alarm,再依次单击Next-Next-Finish,然后在弹出的源代码编辑框内输入源代码并保存即可,
设计的Verilog代码详见光盘附件5-26。(www.xing528.com)
(2)报警模块的功能仿真 在源代码窗口中单击鼠标右键,在弹出的快捷菜单中选择New Source,新建testbench文件,选择Verilog Test Fixture,然后单击Next-Next-Finish,在弹出的testbench模板中编辑激励信号,如图5-112所示。
图5-112 激励波形
仿真波形如图5-113所示。
图5-113 仿真波形
由图5-113可以清楚地看出,当人数在6名以内时,spk处于0的状态,即此时电梯不报警,当人数超过6名时,spk处于1的状态,则电梯报警。
(3)ChipScope在线调试:
①生成ICON核和VIO核并添加到工程,这里使用的是核生成法。如图5-114所示,因为ICON核只控制VIO核,所以控制端口数为1。
图5-114 ICON操作界面
如图5-115所示的VIO核,使用异步I/O端口,异步输入位宽为1,异步输出位宽为5,最后核例化生成代码。
图5-115 VIO操作界面
②在ISE里进行综合和实现,然后生成bit文件。
③在ChipScope里观测调试。
最后得到如图5-116、图5-117所示的结果。
图5-116 person小于等于6时,不报警
图5-117 person大于6时,报警
由图5-116和图5-117的调试结果可知,当人数为6时,spk为0,当人数为7时,spk为1,与ISE仿真结果相同。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。