基于梯形图VHDL的CPLD开发方法研究
时间:11-07
来源:互联网
点击:
顺序控制逻辑电路广泛应用于机器人、全自动家用电器、工业自动化设备及其它自动化装置中,它常采用CPLD器件进行设计与实现。
如果直接采用原理图输入工具或VHDL语言描述的方法来设计顺序控制逻辑电路,则设计效率不高。这是因为顺序控制逻辑电路中包含大量的I/O信号,控制逻辑就是这些I/O信号的逻辑组合,这些I/O信号在整个控制逻辑中会被大量引用,而原理图输入工具中的元件如逻辑门和触发器等的输入引脚数是固定的,逻辑引用不够灵活,同时,I/O信号的大量引用又会使连线过于复杂。VHDL是一种文本设计工具,不是顺序控制逻辑电路设计的专用工具,直接用它编写的顺序控制逻辑程序结构零乱,不够直观,编程及调试效率都不高。
梯形图的原理与特性
梯形图是可编程逻辑控制器(PLC)实现顺序控制逻辑的专用设计工具,用梯形图描述的控制逻辑非常直观易懂。梯形图工具使用简便,开发效率高,对电路设计者的要求很低,因此,电路设计者可以将更多精力用在顺序控制逻辑功能的实现与优化上。
梯形图以两根平行的竖线分别表示电源线和地线,在这两根竖线之间,用横线表示电气连接线,将各种代表逻辑量(“ON”或“OFF”)的元件触点及输出执行元件的线圈用横线串接成一条电气回路。多条这样的回路并列在一起,形状如同阶梯,就构成了实现所需顺序控制逻辑的梯形图。
一个典型的顺序控制电路的梯形图如图1所示。在梯形图的每个回路中,当所有串联的触点全部都处于“ON”状态时,回路就处于导通状态,回路末端的输出执行元件线圈被接通。例如,当X0为“ON”,X1为“OFF”时,执行元件Y0就被接通,产生输出动作。执行元件不能多个串联,其触点所代表的逻辑量可以在梯形图中被多次反复引用。电路的各I/O信号也可以在梯形图中被多次反复引用。
梯形图-VHDL设计方法
如果将梯形图法应用于CPLD开发中,采用基于梯形图的VHDL设计方法,就可将两种设计工具的长处相结合,从而提高顺序逻辑电路设计开发的效率,简化设计难度。
梯形图-VHDL设计方法的总体思路是,将开发过程分为两个阶段:第一阶段先采用梯形图对顺序逻辑电路的逻辑进行描述和设计,第二阶段通过VHDL语言来实现梯形图的逻辑功能,并通过CPLD专用的开发软件对所设计的逻辑进行仿真调试。
在这里,梯形图的作用是作为顺序逻辑电路的逻辑原型,是VHDL语言编程的依据。用梯形图完成的是电路的逻辑功能设计,而VHDL语言程序用于实现其逻辑功能。二者分工协作,相得益彰。其中梯形图-VHDL设计方法的关键在于梯形图的VHDL语言描述。
梯形图的VHDL描述方法
梯形图由三种要素构成,即输入信号、输出执行元件和连接线。在VHDL程序中必须采用特殊方法对这三要素进行有效的描述。
(1)输入信号Xi(i=0,1,…,M)
M个输入信号必须在实体的端口说明语句(PORT语句)中予以说明。在PORT语句中,各输入信号可以单独说明,也可将一组或一类输入信号用一个标准位向量(STD_LOGIC_VECTOR)说明。
可以规定输入信号为逻辑“1”时,其状态为“ON”;而为逻辑“0”时,其状态为“OFF”。梯形图中对输入信号Xi的引用对应于VHDL程序中对Xi的直接引用,而梯形图中对的引用则对应于VHDL程序中对(NOT Xi)的引用。
(2)输出执行元件Yj(j=0,1,…,N)
N个输出执行元件(即输出信号)也必须在实体的端口说明语句(PORT语句)中予以说明。如果某输出信号在梯形图中的其它位置需要被引用,则在PORT语句中必须将其端口模式设置为“BUFFER(输出并向内部反馈)”。在PORT语句中,各输出信号可以单独说明,也可将一组或一类输出信号用一个标准位向量(STD_LOGIC_VECTOR)说明。
可以规定输出信号为逻辑“1”时,其状态为“ON”;而为逻辑“0”时,其状态为“OFF”。梯形图中对输出信号Yj的引用对应于VHDL程序中对Yj的直接引用,而梯形图中对的引用则对应于VHDL程序中对(NOT Yj)的引用。
(3)连接线
梯形图中的连接线有四种:回路最左侧的横线为回路起始线(母线);回路中部的横线为“与”逻辑连接线;回路中部的竖线为“或”逻辑连接线;回路右侧与输出执行元件相连的线为输出线。
在VHDL程序中,可用“与”逻辑运算符“AND”代替梯形图中的“与”逻辑连接线,用“或”逻辑运算符“OR” 替梯形图中的“或”逻辑连接线,用信号赋值运算符“<=” 代替梯形图中的输出线。
这样,梯形图中的每一个电气回路都可很方便地用一条对输出信号的赋值语句来描述。赋值语句的左边是输出信号,右边是一个由各输入/输出信号及与/或运算符构成的逻辑表达式。
虽然在VHDL程序中也可以用IF分支语句来描述梯形图各回路中信号的逻辑关系,但这样会使程序结构很杂乱,调试很困难,可读性也较差,因此不推荐用IF语句来描述梯形图回路中的逻辑,而建议采用逻辑表达式给输出信号赋值的描述方法。
对于梯形图中那些不向外输出信号的内部元件来说,如定时器、状态寄存器、移位寄存器等,可采用元件例化语句调用有关的库元件功能进行描述,并在结构体中为其输出声明一个中间信号。当这类元件有输出信号时,将其输出信号赋值给声明好的中间信号,电路中其它位置就可对该中间信号或者它的取反信号进行引用。 通过以上各描述方法,就可将用梯形图设计的电路逻辑原型方便地逐行转换为VHDL程序。在进行电路逻辑功能设计时,就不必为VHDL程序的语法和程序结构花费过多的时间,能更加专注于电路逻辑功能设计与优化,同时也使所编写的VHDL程序逻辑更加清晰,可读性更好。
如果直接采用原理图输入工具或VHDL语言描述的方法来设计顺序控制逻辑电路,则设计效率不高。这是因为顺序控制逻辑电路中包含大量的I/O信号,控制逻辑就是这些I/O信号的逻辑组合,这些I/O信号在整个控制逻辑中会被大量引用,而原理图输入工具中的元件如逻辑门和触发器等的输入引脚数是固定的,逻辑引用不够灵活,同时,I/O信号的大量引用又会使连线过于复杂。VHDL是一种文本设计工具,不是顺序控制逻辑电路设计的专用工具,直接用它编写的顺序控制逻辑程序结构零乱,不够直观,编程及调试效率都不高。
梯形图的原理与特性
梯形图是可编程逻辑控制器(PLC)实现顺序控制逻辑的专用设计工具,用梯形图描述的控制逻辑非常直观易懂。梯形图工具使用简便,开发效率高,对电路设计者的要求很低,因此,电路设计者可以将更多精力用在顺序控制逻辑功能的实现与优化上。
图1 典型的顺序控制逻辑电路的梯形图 |
梯形图以两根平行的竖线分别表示电源线和地线,在这两根竖线之间,用横线表示电气连接线,将各种代表逻辑量(“ON”或“OFF”)的元件触点及输出执行元件的线圈用横线串接成一条电气回路。多条这样的回路并列在一起,形状如同阶梯,就构成了实现所需顺序控制逻辑的梯形图。
一个典型的顺序控制电路的梯形图如图1所示。在梯形图的每个回路中,当所有串联的触点全部都处于“ON”状态时,回路就处于导通状态,回路末端的输出执行元件线圈被接通。例如,当X0为“ON”,X1为“OFF”时,执行元件Y0就被接通,产生输出动作。执行元件不能多个串联,其触点所代表的逻辑量可以在梯形图中被多次反复引用。电路的各I/O信号也可以在梯形图中被多次反复引用。
梯形图-VHDL设计方法
如果将梯形图法应用于CPLD开发中,采用基于梯形图的VHDL设计方法,就可将两种设计工具的长处相结合,从而提高顺序逻辑电路设计开发的效率,简化设计难度。
梯形图-VHDL设计方法的总体思路是,将开发过程分为两个阶段:第一阶段先采用梯形图对顺序逻辑电路的逻辑进行描述和设计,第二阶段通过VHDL语言来实现梯形图的逻辑功能,并通过CPLD专用的开发软件对所设计的逻辑进行仿真调试。
在这里,梯形图的作用是作为顺序逻辑电路的逻辑原型,是VHDL语言编程的依据。用梯形图完成的是电路的逻辑功能设计,而VHDL语言程序用于实现其逻辑功能。二者分工协作,相得益彰。其中梯形图-VHDL设计方法的关键在于梯形图的VHDL语言描述。
梯形图的VHDL描述方法
梯形图由三种要素构成,即输入信号、输出执行元件和连接线。在VHDL程序中必须采用特殊方法对这三要素进行有效的描述。
(1)输入信号Xi(i=0,1,…,M)
M个输入信号必须在实体的端口说明语句(PORT语句)中予以说明。在PORT语句中,各输入信号可以单独说明,也可将一组或一类输入信号用一个标准位向量(STD_LOGIC_VECTOR)说明。
可以规定输入信号为逻辑“1”时,其状态为“ON”;而为逻辑“0”时,其状态为“OFF”。梯形图中对输入信号Xi的引用对应于VHDL程序中对Xi的直接引用,而梯形图中对的引用则对应于VHDL程序中对(NOT Xi)的引用。
(2)输出执行元件Yj(j=0,1,…,N)
N个输出执行元件(即输出信号)也必须在实体的端口说明语句(PORT语句)中予以说明。如果某输出信号在梯形图中的其它位置需要被引用,则在PORT语句中必须将其端口模式设置为“BUFFER(输出并向内部反馈)”。在PORT语句中,各输出信号可以单独说明,也可将一组或一类输出信号用一个标准位向量(STD_LOGIC_VECTOR)说明。
可以规定输出信号为逻辑“1”时,其状态为“ON”;而为逻辑“0”时,其状态为“OFF”。梯形图中对输出信号Yj的引用对应于VHDL程序中对Yj的直接引用,而梯形图中对的引用则对应于VHDL程序中对(NOT Yj)的引用。
(3)连接线
梯形图中的连接线有四种:回路最左侧的横线为回路起始线(母线);回路中部的横线为“与”逻辑连接线;回路中部的竖线为“或”逻辑连接线;回路右侧与输出执行元件相连的线为输出线。
在VHDL程序中,可用“与”逻辑运算符“AND”代替梯形图中的“与”逻辑连接线,用“或”逻辑运算符“OR” 替梯形图中的“或”逻辑连接线,用信号赋值运算符“<=” 代替梯形图中的输出线。
这样,梯形图中的每一个电气回路都可很方便地用一条对输出信号的赋值语句来描述。赋值语句的左边是输出信号,右边是一个由各输入/输出信号及与/或运算符构成的逻辑表达式。
虽然在VHDL程序中也可以用IF分支语句来描述梯形图各回路中信号的逻辑关系,但这样会使程序结构很杂乱,调试很困难,可读性也较差,因此不推荐用IF语句来描述梯形图回路中的逻辑,而建议采用逻辑表达式给输出信号赋值的描述方法。
对于梯形图中那些不向外输出信号的内部元件来说,如定时器、状态寄存器、移位寄存器等,可采用元件例化语句调用有关的库元件功能进行描述,并在结构体中为其输出声明一个中间信号。当这类元件有输出信号时,将其输出信号赋值给声明好的中间信号,电路中其它位置就可对该中间信号或者它的取反信号进行引用。 通过以上各描述方法,就可将用梯形图设计的电路逻辑原型方便地逐行转换为VHDL程序。在进行电路逻辑功能设计时,就不必为VHDL程序的语法和程序结构花费过多的时间,能更加专注于电路逻辑功能设计与优化,同时也使所编写的VHDL程序逻辑更加清晰,可读性更好。
电路 机器人 自动化 CPLD VHDL PLC 仿真 相关文章:
- 基于Virtex-5 FPGA设计Gbps无线通信基站(05-12)
- 基于FPGA的DVI/HDMI接口实现(05-13)
- 基于ARM的嵌入式系统中从串配置FPGA的实现(06-09)
- 基于PLB总线的H.264整数变换量化软核的设计(03-20)
- FPGA按键模式的研究与设计(03-24)
- 周立功:如何兼顾学习ARM与FPGA(05-23)