当前位置:首页 > 嵌入式 > 嵌入式硬件

引言

顺序控制逻辑电路广泛应用于机器人、全自动家用电器、工业自动化设备及其它自动化装置中,它常采用CPLD器件进行设计与实现。

如果直接采用原理图输入工具或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程序逻辑更加清晰,可读性更好。

应用实例

以下通过图1所示的典型的顺序控制电路的实例来说明梯形图的VHDL描述方法。

在图1中,X0、X2和X4分别是三个输出回路的启动信号,X1、X3和X5分别是三个输出回路的停止信号,Y0、Y1和Y2分别是三个输出回路的输出执行元件。只有当Y0启动输出后,才允许Y1启动;只有当Y1启动输出后,才允许Y2启动。reset为CPLD芯片的上电复位信号,低电平有效。

实现该电路控制的VHDL程序逻辑如下:

LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY sequence IS
PORT(X0, X1, X2, X3, X4, X5: IN STD_LOGIC;
RESET: IN STD_LOGIC;
Y0, Y1, Y2 : BUFFER STD_LOGIC);
END sequence;
ARCHITECTURE ladder OF sequence IS
BEGIN
PROCESS(RESET, X0,X1,X2,X3,X4,X5)
BEGIN
IF (RESET='0') THEN
Y0<

='0'; Y1<='0'; Y2<='0';
ELSE
Y0<=(X0 OR Y0)AND (NOT X1);
Y1<=(X2 OR Y1)AND (NOT X3)AND Y0;
Y2<=(X4 OR Y2)AND (NOT X5)AND Y1;
END IF;
END PROCESS;
END ladder;

利用MAX+PLUS II的定时仿真工具对上面的程序进行仿真,结果如图2所示。从时序仿真的结果可以看到,电路的输出逻辑与梯形图原型的逻辑完全一致。

结语

本文通过对一个典型顺序控制电路梯形图的VHDL程序设计与时序仿真,表明梯形图-VHDL设计方法是正确可行的。梯形图法的引入使VHDL程序的设计得到简化,所设计出的程序结构简练,输出逻辑表达清楚。梯形图与VHDL程序分工明确,电路逻辑功能设计的工作由梯形图来承担,而VHDL程序只需负责对梯形图的逻辑功能进行描述并生成CPLD的下载文件。这样,对两种设计工具各取所长,就使得用CPLD开发顺序逻辑控制电路和系统的效率得到提高。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在嵌入式系统开发、调试和测试过程中,J-Link作为一种高效的调试工具,为开发者提供了极大的便利。然而,要想充分发挥J-Link的功能,首先需要正确安装其驱动程序。本文将详细介绍J-Link驱动的安装过程,并深入解析其中...

关键字: jlink 嵌入式系统 嵌入式开发

与谷歌的合作使 Nordic 能够在 nRF Connect SDK 中嵌入开发人员软件,以构建与安卓移动设备兼容的谷歌Find My Device和未知跟踪器警报服务

关键字: 谷歌 SoC 嵌入式开发

嵌入式开发作为当今电子工程和信息技术领域的核心分支,涵盖了广泛的软硬件技术和系统集成方法,用于构建高性能、低成本、低功耗、体积小巧且功能专一的嵌入式系统。这些系统无处不在,从微型传感器节点到复杂的工业控制设备,从日常使用...

关键字: 嵌入式开发 Python

嵌入式开发是当今信息技术领域不可或缺的一部分,它融合了硬件设计、软件开发和系统集成等多个学科,专门用于创建那些被嵌入到特定设备或系统中的专用计算机系统。嵌入式开发的主要过程包括利用分立元件或集成器件进行电路设计、结构设计...

关键字: 嵌入式开发 硬件设计 软件开发

嵌入式开发作为一种专业且技术密集型的领域,涵盖了从硬件底层驱动、中间件到应用层软件开发等多个层面的工作,其所需的工具种类繁多,各有针对性,旨在提升开发效率、保证代码质量以及简化调试过程。

关键字: 嵌入式开发 keil

嵌入式开发作为信息技术领域的重要分支,其涉及的语言种类繁多,各具特色。这些语言的选择取决于目标平台的特性、性能需求、开发者的熟练程度以及项目的具体要求。本文将详细介绍几种常见的嵌入式开发语言,包括C语言、C++、汇编语言...

关键字: 嵌入式开发 C语言

嵌入式开发是一项综合了硬件设计、软件编程以及系统整合的技术活动,其目的是为了创造出能够在特定环境中高效、稳定运行的嵌入式系统。这一流程涵盖了多个紧密关联且不可或缺的阶段,从最初的客户需求分析到最终的产品测试和交付,每个环...

关键字: 嵌入式开发 硬件设计

嵌入式开发作为一个融合了计算机软硬件和系统工程的综合性领域,其成功与否往往取决于三个核心要素的有效整合与协调。这三个要素分别是:硬件平台的选择与设计、软件开发及其优化、以及系统级的设计与集成。深入理解并熟练掌握这三个方面...

关键字: 嵌入式开发 ARM

嵌入式开发作为信息技术的关键支柱,在全球数字化转型浪潮中扮演着无可替代的角色。从传统的嵌入式微控制器到如今先进的片上系统(SoC),再到与云计算、人工智能深度融合的智能终端,嵌入式系统的演进与发展始终紧跟时代脉搏。本文将...

关键字: 嵌入式开发 智能应用

嵌入式开发是一种专门针对特定硬件平台设计和实现软件系统的工程实践,它涵盖了从需求分析、系统设计、编程实现、调试测试直到产品部署及维护的全过程。本文将深入探讨嵌入式开发的主要阶段,分解其流程并阐述每个步骤的关键要点,以便于...

关键字: 嵌入式开发 嵌入式软件
关闭
关闭