Está en la página 1de 10

Traducido del inglés al español - www.onlinedoctranslator.

com

JID: MICPRO
ARTÍCULO EN PRENSA [m5G; 24 de noviembre de 2015; 12:11]

Microprocesadores y microsistemas 000 (2015) 1–10

Listas de contenidos disponibles en ScienceDirect

Microprocesadores y microsistemas
revista Página de inicio: www.elsevier.com/locate/micpro

Un PLC basado en IEC 61131-3 implementado mediante un FPGA


M. Chmiel a, J. Kulisz a,∗, R. Czerwinski a, A. Krzyzyk B, M. Rosol B, P. Smolarek a
a Instituto de Electrónica, Facultad de Control Automático, Electrónica e Informática, Universidad Tecnológica de Silesia, Akademicka Str. 16, 44-100 Gliwice, Polonia

B Cadence Design Systems, Inc., Katowice, Polonia

información del artículo abstracto

Historia del artículo: El artículo analiza el proceso de diseño de un controlador lógico programable implementado por medio de un dispositivo
Recibido el 29 de septiembre de 2015
FPGA. El PLC implementa a nivel de lenguaje máquina un subconjunto del conjunto de instrucciones definido en la norma EN
Aceptado el 2 de noviembre de 2015
61131-3. Se presentan diferentes aspectos de la lista de instrucciones y el diseño de la arquitectura de hardware, sin embargo,
Disponible en línea el xxx
dos aspectos son los más importantes: la Unidad Central de Procesamiento (CPU) y la Unidad Aritmética y Lógica (ALU). La ALU
Palabras clave: puede ejecutar 34 operaciones, que incluyen las operaciones lógicas básicas, comparadores y las cuatro operaciones
Controladores lógicos aritméticas básicas. Las operaciones se pueden realizar para números de coma flotante y de coma fija. Todas las operaciones
programables Norma EN 61131-3 se implementan íntegramente en hardware, por lo que la solución es rápida. El PLC desarrollado se implementa mediante un
Unidades centrales de procesamiento dispositivo FPGA; sin embargo, los modelos HDL utilizados para la síntesis se pueden portar fácilmente a un ASIC.
Unidades aritméticas y lógicas Aritmética de © 2015 Publicado por Elsevier BV
coma flotante Arreglos de puertas
programables en campo

1. Introducción Idiomas. Los más comunes en la industria son los lenguajes gráficos. Por
otro lado, la forma de lenguaje más cómoda, durante el diseño del
Los controladores lógicos programables (PLC) han ganado gran popularidad como controlador y también para los programadores, es Instruction List (IL). La
un medio conveniente para implementar sistemas de control durante los últimos 50 lista de instrucciones es especialmente útil para probar, poner en marcha y
años. Durante muchos años, los PLC se solían construir utilizando microprocesadores de mejorar los programas de control.
uso general o unidades de microcontroladores (MCU), por ejemplo, el popular MCS'51 de Algunos fabricantes ofrecen controladores que se pueden programar
Intel.[1,2]. Estas soluciones eran baratas, pero bastante inconvenientes en términos de utilizando idiomas clasificados según la norma EN 61131-3 [1,2,6]. Muy a
implementar muchas funcionalidades específicas para PLC. Los programas de los PLC menudo, parece que la estructura de hardware del PLC no es compatible
tuvieron que compilarse en el lenguaje de máquina de la MCU de destino y la con el estándar de software: el fabricante utiliza un compilador que traduce
funcionalidad específica del PLC se implementó completamente en el software. Las el programa de procesamiento adicional escrito en un lenguaje estándar al
matrices de puertas programables en campo (FPGA) y los circuitos integrados específicos lenguaje "nativo" y luego lo compila para ese lenguaje de controlador.[7].
de la aplicación (ASIC) en general, ofrecen una alternativa interesante al diseño de PLC Este enfoque a menudo hace que el uso del PLC no sea óptimo. De hecho,
basados en MCU. Los recursos lógicos de los dispositivos FPGA modernos pueden los recursos del controlador no están alineados con los estándares.
alcanzar millones de puertas lógicas equivalentes[3,4], lo que es suficiente para
implementar en un solo dispositivo una CPU completa de 32 bits, junto con la mayoría de La capacidad lógica y la flexibilidad de los FPGA modernos nos brindan la
las periferias. oportunidad de desarrollar y probar diferentes soluciones y prototipos
La gran popularidad de los PLC hizo que muchos proveedores ofrecieran construidos de PLC. [8,9,10,11,12]. El diseño presentado se basa en la
muchos tipos diferentes de controladores. Un intento de poner algunos pedidos arquitectura clásica de “software”: el PLC se realiza como una unidad
en el mercado de los PLC llevó al establecimiento de la norma EN 61131. La EN microprogramada en la que la operación se basa en el programa de control.
61131 es un estándar para controladores programables[5]. Consta de nueve La implementación del PLC nos da la oportunidad de comprobar las ventajas
partes; sin embargo, la más importante para las investigaciones de investigación y desventajas del estándar. También se puede comprobar la viabilidad de las
de los autores es la tercera parte (EN 61131-3). Esta parte analiza los lenguajes de colecciones estándar[13,14]. Además, es posible integrar bloques de
programación. Se especifican dos grupos de idiomas: idiomas de texto y gráficos. funciones como B-BAC escritos en un lenguaje estándar en el PLC y
aumentar la efectividad del programa de control.[15].
Las consideraciones mencionadas fueron la inspiración para un grupo de
investigadores de la Universidad Tecnológica de Silesia para desarrollar un
∗ Autor
correspondiente. Tel .: +48 322371495.
Correos electrónicos: mchmiel@polsl.pl (M. Chmiel), jozef.kulisz@polsl.pl (J. Kulisz),
diseño de prototipo de un PLC e implementarlo como un todo en un
rczerwinski@polsl.pl (R. Czerwinski), adrian.krzyzyk@gmail.com (A. Krzyzyk), dispositivo FPGA. Otro objetivo del proyecto fue diseñar una CPU con la lista
rosolm@interia.pl (M. Rosol), issenheimm@tlen.pl (P. Smolarek). de instrucciones compatible con la Norma EN 61131-3

http://dx.doi.org/10.1016/j.micpro.2015.11.001
0141-9331 / © 2015 Publicado por Elsevier BV

Cite este artículo como: M. Chmiel et al., Un PLC basado en IEC 61131-3 implementado por medio de un FPGA, microprocesadores y microsistemas
(2015), http://dx.doi.org/10.1016/j.micpro.2015.11.001
JID: MICPRO
ARTÍCULO EN PRENSA [m5G; 24 de noviembre de 2015; 12:11]

2 M. Chmiel y col. / Microprocesadores y microsistemas 000 (2015) 1–10

[7]. Con este diseño el objetivo era lograr la compatibilidad con la norma a • contadores: CU - Count Up, CD - Count Down, SC - Set Counter, R -
nivel de lenguaje máquina. Sin embargo, se debe enfatizar que no se Reset,
implementa la norma completa, sino un subconjunto de ella. Un objetivo de • temporizadores: TOF - Timer OFF, TP - Timer Pulse, TON - Timer ON,
la norma era definir un conjunto de operaciones posiblemente completo, e • o controlador de E / S.
incluso redundante, y una variedad de tipos de datos, que se supone cubre
todos los problemas imaginables. Muchas operaciones (normalmente
Un bus de control también incluye señales para leer datos de
descritas como "funciones"), son muy complejas, y su implementación
módulos en la CPU (RD) y para escribir datos en módulos desde la CPU
directa en hardware sería muy difícil y poco práctica. De este conjunto, se
(WR). El final del bucle de control se señaliza mediante el bit END en el
eligió un subconjunto de 122 instrucciones para su implementación.
bus de control.

La idea de desarrollar una CPU de PLC, que está optimizada para ejecutar 3. Controlador de memoria

programas de control escritos en un lenguaje particular, se presentó en varios


trabajos, por ejemplo, en [dieciséis] para el formato LAD, y en [17], y [18]para IL. Una de las características más importantes de los PLC es la memoria. Es difícil
imaginar un programa de control que no utilice memoria de datos en soluciones
El propósito del trabajo es presentar un concepto de implementación clásica industriales reales. El segundo tipo de memoria es la memoria del programa. La
de un controlador lógico programable mediante dispositivos lógicos FPGA. El estructura del primero es la más interesante para los programadores y debe
concepto de PLC presentado es compatible con la norma EN 61131-3. El término construirse cuidadosamente en el PLC.
"arquitectura de software clásica" significa un procesador de software. De hecho, Los datos en los PLC tienen diferentes formatos. En primer lugar, las variables
cabe señalar que la solución presentada es un System on Chip. La CPU presentada de bits se utilizan para los cálculos de bits. Sin embargo, es necesario utilizar datos
es realmente un procesador de software; sin embargo, es compatible con “más amplios” para los cálculos basados en variables de byte, palabra, palabra
módulos de hardware; por ejemplo, los temporizadores y contadores se realizan doble o coma flotante. Sería bueno si, a pesar de utilizar un contenido de
como bloques de hardware y funcionan en paralelo (concurrente) con la CPU. memoria, se pudiera acceder a diferentes formatos de datos. Por ejemplo, el bit
[19,20,21]. El aspecto más importante del artículo es el diseño de la Unidad M0.0 debería ser parte del marcador de palabra doble M0. Los programadores
Aritmética y Lógica (ALU). Un rasgo característico de la ALU es que todas las deben tener acceso al bit y a la palabra doble completa. Los proveedores de PLC
operaciones aritméticas admitidas se implementaron completamente en comúnmente ofrecen esta posibilidad; sin embargo, el acceso a un bit a veces se
hardware. realiza mediante operaciones de enmascaramiento, de forma explícita o implícita,
El documento considera tres aspectos diferentes: la norma EN 61131-3, los que realiza el software después de la compilación del programa. Hay
elementos de la estructura del PLC y los recursos de FPGA. microprocesadores, como ARM Cortex-M3, que tienen acceso inmediato a bits y
palabras dobles gracias al alias de banda de bits
[22]. Funcionalidad similar está disponible también en dispositivos FPGA modernos. Es
2. Estructura del PLC
una regla que los dispositivos FPGA modernos contienen bloques de memoria dedicados
- Block RAM-s, que se pueden configurar como verdaderas memorias de doble puerto[23]
Hay muchos grados de libertad al comenzar a diseñar un PLC. Una
.
limitación era obvia, la norma EN 61131-3, pero la otra debe asumirse. Se ha
Estas características de las RAM de bloque se utilizan en el PLC presentado. Por
asumido que las instrucciones son unarias o sin argumento. Debido al
ejemplo, hay dos marcadores de memoria de palabras dobles que tienen accesibilidad de
carácter experimental y de investigación del trabajo, no es necesario
bits como marcadores de bits (Figura 2B). También se puede acceder a estos dos
construir un PLC enorme. Los supuestos básicos incluyen: el bus de datos
marcadores de memoria de dos palabras como los clásicos marcadores de memoria de
tiene un ancho de 32 bits, el bus de direcciones tiene un ancho de 8 bits y el
dos palabras dobles.
bus de control tiene un ancho de 10 bits.
Las memorias de imagen de entrada y salida también se pueden organizar como
Una estructura generalizada del PLC se presenta en Figura 1. La parte más
memorias de bits / palabras dobles. Debido a la dirección de memoria de 8 bits en el PLC
importante del controlador es la Unidad Central de Procesamiento (CPU). La CPU
diseñado, solo se pueden direccionar 256 celdas de memoria. De hecho, el espacio de
incluye elementos que controlan el funcionamiento de todo el controlador: leer y
memoria se reduce aún más dos veces. Esto se debe a que un bit de dirección (MSB) está
ejecutar instrucciones. Además, la CPU incluye memorias dedicadas a marcadores
diseñado como designador de bit / palabra doble (como se presenta en el ejemplo en
(marcadores de memoria de bits y marcadores de memoria de doble palabra) con
Figura 2C). Es posible direccionar 128 bits y 128 palabras dobles. Esos 128 bits son parte
controladores de marcador. La unidad central de procesamiento se divide en dos
de palabras dobles gracias a la RAM real de doble puerto. Se puede acceder a una
partes principales: la unidad lógica de bits y la unidad aritmético-lógica de doble
palabra doble de la memoria de imagen de entrada, una palabra doble de la memoria de
palabra. Ambas partes operan en pilas de registros de resultados actuales (CR).
imagen de salida y dos palabras dobles como memoria de marcadores. Sin embargo, el
También está la bandera de desbordamiento (OV) dentro de la CPU. El propósito
mapa de memoria está diseñado para fines de investigación. No hay obstáculos para
de las dos unidades de procesamiento de datos independientes es acelerar la
ampliar el bus de direcciones y, como resultado, el mapa de memoria también.
ejecución de operaciones simples en variables binarias.[19,21].

Los contadores y temporizadores se realizan como módulos de hardware que


apoyan el funcionamiento de la unidad central de procesamiento. Los contadores y 4. Unidad central de procesamiento

temporizadores se basan en datos de 30 bits de ancho. La resolución del temporizador es


igual a 1 ms. La CPU del controlador lógico programable está diseñada para ejecutar las

Desde el punto de vista del “exterior”, lo más importante es la posibilidad instrucciones apropiadas, especificadas por el programador. La lista de instrucciones de

de conectar entradas y salidas. La necesidad de operar en diferentes la CPU presentada se diseñó según la norma EN 61131-3, especialmente en función del

estándares (24VDC, 120VAC, 10 V para E / S analógicas) forzó la necesidad de lenguaje de texto: Lista de instrucciones (IL). La lista de instrucciones de la unidad

conectar módulos de señal fuera de la FPGA. El controlador de E / S que diseñada consta de las siguientes operaciones: copiar datos de bit / palabra doble,

forma parte del PLC implementado dentro de la FPGA es responsable de la operaciones bit a bit para datos de bit / palabra doble, aritmética, rotación y movimiento

comunicación con los módulos de señales. Las memorias de imagen de para datos de palabra doble, detección de disparo, saltos, mantenimiento de contadores

entrada y salida son partes del controlador de E / S. La imagen se sincroniza y temporizadores. La lista completa de instrucciones se puede encontrar en[24].

con el ciclo del programa (bucle de control). Las entradas y salidas se leen /
escriben desde / hacia las memorias de imagen en el programa de control. Como ya se dijo, las instrucciones en IL son unarias o sin argumento. La
primera parte de la instrucción es el código de operación. En este proyecto,
El bus de control incluye señales para controlar la comunicación de la la CPU ejecuta un conjunto de instrucciones que consta de 120 tipos de
CPU con módulos internos como: comandos, lo que hace que el código de operación tenga un ancho de 7 bits.

Cite este artículo como: M. Chmiel et al., Un PLC basado en IEC 61131-3 implementado por medio de un FPGA, microprocesadores y microsistemas
(2015), http://dx.doi.org/10.1016/j.micpro.2015.11.001
JID: MICPRO
ARTÍCULO EN PRENSA [m5G; 24 de noviembre de 2015; 12:11]

M. Chmiel y col. / Microprocesadores y microsistemas 000 (2015) 1–10 3

Figura 1. La estructura del controlador lógico programable presentado.

B
metro
RAM DE DOBLE PUERTO ...
PUERTO A
metro MW 3 MW 3
PUERTO A MW 2 MW 2
CTRL A MW 1
MW 0
MEMORIA
FORMACIÓN

31 0
norte

PUERTO B
norte C
PUERTO B
DI1 Addr 1000_0001
CTRL B
DI0 Addr 0000_0001
7 0

Figura 2. a) Modelo de RAM de doble puerto. b) Fragmento de organización de la memoria de marcadores. c) Ejemplo de esquema de direccionamiento bit / byte.

La segunda parte de un comando es el operando opcional, que puede ser de operaciones meric y CR_b0 (1 bit) para operaciones bit. Además, para utilizar
datos o constante. El estándar no especifica el tamaño de los operandos y en "operaciones de paréntesis" era necesario incorporar pilas de CR (mediante
realidad dice que puede ser cualquier cosa. Como los datos más comunes en la estructura de datos LIFO - Last In First Out).
la industria se almacenan en 16 bits (entero) o 32 bits (real), se decidió La estructura de la CPU se presenta en Fig. 3. Las partes más
utilizar datos de 32 bits de ancho. El código de operación y el operando importantes de la CPU son:
combinados dan como resultado una celda de memoria de un ancho de 39
bits. (a) Contador de programa (PC) - Se implementa como un módulo de
La CPU de un operando requiere un registro especial adicional llamado en el contador de 10 bits sincronizado por el reloj principal del sistema, y
CR estándar (Resultado actual) [5,7]. Cada operación utiliza el contenido del tiene la posibilidad de escribir valores directamente (para ejecución
registro y el resultado se vuelve a escribir en CR. Como los controladores de “salto”);
programables realizan operaciones en variables numéricas y bits individuales, la (b) Memoria de programa (PM): contiene un programa escrito por el
unidad está equipada con dos tipos de CR: CR_W0 (32 bits) para números programador; se ha colocado en la estructura de un "Bloque

Cite este artículo como: M. Chmiel et al., Un PLC basado en IEC 61131-3 implementado por medio de un FPGA, microprocesadores y microsistemas
(2015), http://dx.doi.org/10.1016/j.micpro.2015.11.001
JID: MICPRO
ARTÍCULO EN PRENSA [m5G; 24 de noviembre de 2015; 12:11]

4 M. Chmiel y col. / Microprocesadores y microsistemas 000 (2015) 1–10

Contador de programa PM_ADDR Memoria de programa


8
39
Bus de direcciones
10 OP
Mando 32
IC
Encimera

IC
4 Bus de datos de palabras

INC_PC WR_PC WR_CC OP_Code DMUX_CH


CRW_CH Palabra
CR_W0
Apilar
WR_W
Decodificador de instrucciones

5 EN 1 EN 2
OP_SIG_W
CÓDIGO Palabra doble
Aritmética - Unidad lógica
Bus de control

OP_SIG_b

(ALU_W)

CRb_CH
OV
CR_b0

WR_b
SALIDA (ACCW_DATA)
DATA_BIT_BUS

ALUW_
CR_b0
8

Poco
CR_b0
Apilar

CÓDIGO EN 1 EN 2

Unidad lógica de bits FUERA

(ALU_b)

Fig. 3. La estructura de la CPU.

RAM ”de una FPGA; En esta etapa de la investigación, el programa se carga


durante el proceso de configuración de FPGA; CLK 0 CLK

(c) Contador de comandos (CC): es un bloque especial dispuesto para el control Inicialización

del tiempo (número de ciclos del reloj del sistema) de instrucciones


Mando
particulares. Tiene acceso directo al código de comando y al decodificador 3 Contador <> 0
1
de instrucciones. Gracias al contador de comandos, la CPU puede ejecutar Búsqueda de instrucciones Descodificación

instrucciones de cualquier duración de ejecución, es decir, instrucciones


de multiplicación o división que requieren más de un ciclo de reloj del
Mando
2
sistema (Cuadro 4); Contador = 0 Ejecución CLK
(d) Unidad lógica de bits (ALU_b): realiza operaciones en bits. La unidad Bitlogic
incluye: un módulo de procesamiento, CR_b0 y pila de 256 bits para
Figura 4. Un ciclo de instrucción del PLC diseñado.
instrucciones de soporte. Se ejecutan comandos específicos para PLC,
como AND / OR / XOR / NOT;
(e) Unidad aritmético-lógica (ALU_W): realiza operaciones en variables de marcadores de memoria. La comunicación, a través del controlador de bus de
32 bits. Incluye: el módulo de procesamiento, CR_W0 y pila de 256 datos, es crear un canal adecuado en los multiplexores de bus de datos. Este
palabras dobles para instrucciones de soporte. Además, la ALU canal lo determina el decodificador de instrucciones;
genera el indicador de desbordamiento (OV). El ALU _W se describe (g) Decodificador de instrucciones (ID): decodifica el código de operación y
con precisión enSección 5; genera señales de control para todos los módulos del PLC. Ha sido
(f) Bus de datos (DB): permite la comunicación entre diferentes diseñado como una máquina de estados finitos que implementa las cuatro
módulos de PLC. Por tanto, debe ser muy "flexible". No hay fases principales del ciclo de instrucción (Figura 4): inicialización,
búferes de tres estados dentro de los FPGA contemporáneos. Es decodificación, ejecución y búsqueda de instrucciones para el siguiente
imposible crear el bus bidireccional tradicional. Cada uno debe comando. La transición a cada fase subsiguiente ocurre con el flanco
contener entradas y salidas independientes para poder escribir y ascendente del reloj del sistema, excepto el estado de ejecución de la
leer información. Esto hace que cada módulo contenga un instrucción. La fase de ejecución dura un número específico de ciclos de
puerto de 64 bits para cada módulo que utilice datos de palabra reloj (ver el contador de comandos). Durante la fase de inicialización, el
doble. Dicho bus de datos se creó utilizando multiplexores e contador de comandos se establece según el número de ciclos de reloj
incluye: seis entradas de un bit, siete entradas de 32 bits, una necesarios para implementar la instrucción (Cuadro 4). Durante la fase de
salida de un bit y una salida de 32 bits. Además, para ejecutar decodificación se preparan las señales de control apropiadas. La tercera
instrucciones y asegurar una comunicación flexible, se ha fase es la orden de ejecución. En esta fase, el decodificador de
establecido una conexión entre el bit menos significativo de la instrucciones espera hasta que el contador de comandos sea cero.
salida de 32 bits y la entrada de un bit, así como entre la salida Mientras tanto, restablece, aumenta o disminuye las señales de las pilas,
de un bit y el menos significativo de la entrada de 32 bits. prepara la PC y restablece la señal de control. La última fase de una
creado. máquina de estado del decodificador de instrucciones es

Cite este artículo como: M. Chmiel et al., Un PLC basado en IEC 61131-3 implementado por medio de un FPGA, microprocesadores y microsistemas
(2015), http://dx.doi.org/10.1016/j.micpro.2015.11.001
JID: MICPRO
ARTÍCULO EN PRENSA [m5G; 24 de noviembre de 2015; 12:11]

M. Chmiel y col. / Microprocesadores y microsistemas 000 (2015) 1–10 5

Figura 5. Diagrama de realización de instrucciones de tres ciclos de reloj.

Figura 6. Diagrama de realización de instrucciones de un ciclo de reloj.

preparación para el siguiente ciclo de instrucción, por ejemplo, se 5.1. Implementación de la ALU - la versión combinatoria
restablece la señal que incrementa el PC. El análisis de tiempo de la
máquina de estado se muestra enHigos. 5y 6. El diagrama de tiempos Se decidió que la primera versión de la ALU sería una estructura
presentado enFigura 5muestra la ejecución de la primera instrucción completamente combinatoria, que consistiría en subcircuitos separados
desde el momento en que se enciende el sistema. Se necesitan tres ciclos responsables de generar resultados para las operaciones relevantes. Un diagrama
de reloj para generar el resultado correcto por parte de la ALU. Análisis de de bloques de la versión combinatoria de la ALU se presenta enFigura 7.
tiempo presentado enFigura 6 muestra la ejecución del comando “en Como muestra el diagrama, los argumentos de entrada que procesará la
medio del programa” para el cual ALU genera el resultado en un ciclo de ALU se aplican a las entradas de todos los subcircuitos. Los subcircuitos
reloj. funcionan en paralelo y cada uno de ellos genera el resultado de la
operación correspondiente. El resultado final es seleccionado por el
La memoria de marcadores es la memoria ubicada en la CPU, donde el usuario multiplexor de salida y transferido a la salida de toda la ALU. Las entradas de
puede almacenar cualquier dato: de un solo bit o de 32 bits. Está integrado en las dirección del multiplexor están controladas por el código de operación
RAM de bloque y su estructura se describió enSeccion 3. entregado por la unidad de control de la CPU. Los subcircuitos responsables
de realizar operaciones posteriores no comparten recursos en general,
aunque la suma y la resta se implementaron en un módulo.
5. Unidad aritmética y lógica El objetivo de la implementación combinatoria fue obtener una
estimación de la velocidad máxima que puede alcanzar la ALU para una
Se decidió que el PLC admitiría dos tipos de números: entero y real. Ambos tecnología objetivo. Por esta razón también se evitó el intercambio de
tipos están representados en palabras de datos de 32 bits de ancho. Los números recursos. Si el mismo recurso fuera utilizado por varios subcircuitos de la
enteros utilizan el conocido formato de complemento a dos (TC) ALU, tendrían que insertarse grandes multiplexores en la estructura del
[25], y los números reales se representan como números de punto flotante circuito, y esto alargaría las rutas de las señales y aumentaría los retrasos de
de precisión simple de acuerdo con el estándar IEEE 754 [26]. tiempo.

Cite este artículo como: M. Chmiel et al., Un PLC basado en IEC 61131-3 implementado por medio de un FPGA, microprocesadores y microsistemas
(2015), http://dx.doi.org/10.1016/j.micpro.2015.11.001
JID: MICPRO
ARTÍCULO EN PRENSA [m5G; 24 de noviembre de 2015; 12:11]

6 M. Chmiel y col. / Microprocesadores y microsistemas 000 (2015) 1–10

AB se generaron utilizando relaciones lógicas simples, por ejemplo, "Menor o igual"


es equivalente a "no mayor que".
32 Los comparadores de punto flotante utilizan básicamente los mismos circuitos que
Agregar / Sub Bandera OV sus homólogos de punto fijo. Difieren ligeramente, ya que la representación de punto

En t
32 flotante se basa en el concepto de magnitud de signo. Los comparadores de coma
32 flotante también realizan una verificación, si los argumentos de entrada son correctos.

Sintetizar la multiplicación y la división es un problema distinto. En la


32 literatura se pueden encontrar varios algoritmos para realizar estas
Agregar / Sub

Bandera OV operaciones. El software de síntesis generalmente no es capaz de sintetizar


Verdadero

32 las operaciones directamente y el diseñador tiene que especificar la


32 estructura del circuito en un nivel más bajo de abstracción. Otra opción es
utilizar generadores de núcleo IP. Sin embargo, de esta forma obtendríamos
una solución, que está ligada al software de síntesis utilizado y a la
...

32 32 bits arquitectura de destino. Como uno de los objetivos del proyecto era
Resultado
preparar un diseño, que no tenga arquitectura y sea portátil entre
En t

Bandera OV
32 plataformas de software, se abandonó este enfoque.
Mul

32
32 Afortunadamente, es una regla que las arquitecturas FPGA modernas
contienen bloques funcionales dedicados (generalmente denominados
"bloques DSP") que facilitan la implementación de operaciones aritméticas
más complejas y, en particular, la multiplicación [29]. El software ISE que se
32
Bandera OV utilizó para la síntesis es capaz de sintetizar la multiplicación de punto fijo
Bandera OV
directamente, si solo la estructura de la FPGA objetivo contiene bloques de
Verdadero
Mul

32 Comparador
este tipo. Se asumió para el diseño que la arquitectura de destino contendría
32 producción
algún tipo de bloques DSP. La multiplicación se describió en VHDL de
manera similar, como suma y resta, es decir, mediante el uso de notación
vectorizada, y el "∗”Operador. En tal caso, el software de síntesis implementa
...

32
la multiplicación de punto fijo utilizando bloques DSP. La solución es eficaz
Comparar

Bandera OV
en términos de uso de recursos y muy rápida.[30].
Comp.
32
output Sin embargo, este concepto no se puede aplicar a las operaciones de división,
ya que no se pueden encontrar bloques funcionales que realicen la división en las
arquitecturas FPGA. Finalmente, la división de punto fijo se implementó utilizando
...

el algoritmo de recurrencia de dígitos simple[25] iterado en el espacio, es decir, la


estructura que consta de sumadores / restadores en cascada.
...

Código de operación
5 La implementación de operaciones flotantes en hardware es un problema más
complejo, ya que la representación de punto flotante no es uniforme, como la
Figura 7. Estructura de la versión combinatoria de la ALU.
representación del complemento a dos. Un número de punto flotante consta de
tres componentes: el signo, el exponente y la mantisa.
La versión combinatoria de la ALU realizó 32 operaciones, que [26]. Las operaciones reales deben realizarse sobre las mantisas de los
incluyeron: argumentos, pero también deben tenerse en cuenta los exponentes, ya que
contienen información del orden de magnitud de un número.
• las cuatro operaciones aritméticas básicas en números enteros y reales
Figura 8 muestra un diagrama de bloques que representa la
(es decir, ADD_I, SUB_I, MUL_I, DIV_I, ADD_R, SUB_R, MUL_R, DIV_R),
estructura del subcircuito que realiza la suma y la resta de punto
• la operación de módulo para números enteros (MOD_I),
flotante. En el primer bloque (el bloque "CompMux"), se comparan los
• conversión de entero a real (ITR), y de real a entero (Round),
argumentos de entrada, se identifican los números mayor y menor y se
transfieren a las salidas "Gt" y "Le" respectivamente. Luego, en el
• conversión de signo para números enteros y reales (NEG_I, NEG_R),
bloque "ExSub", el exponente del número menor se resta del
• los seis comparadores básicos para números enteros y reales (EQ_I,
exponente del número mayor. La diferencia "delta" se transfiere al
NE_I, GT_I, GE_I, LT_I, LE_I, EQ_R, NE_R, GT_R, GE_R, LT_R, LE_R),
bloque "MShifter", que es responsable de desplazar la mantisa del
• tres operaciones lógicas en palabras de datos de 32 bits (AND, OR, XOR),
número menor en el número apropiado de bits, antes de que se
• desplazarse a la izquierda y desplazarse a las operaciones de la derecha (SL, SR),
agreguen o resten las mantisas en el bloque "MAddSub". Finalmente,
• dos operaciones de rotación (RL, RR).
en el bloque "Norma", el número resultante se ensambla y se transfiere
Una descripción más detallada de la ALU combinatoria, junto con la lista a la salida del circuito. El bloque "Norm" también se encarga de
completa de las operaciones implementadas, se puede encontrar en [27]. manejar casos especiales, como infinitos.
El diseño se preparó como un conjunto de módulos VHDL sintetizables.
La implementación de operaciones lógicas en VHDL es simple, ya que las
operaciones lógicas se pueden sintetizar directamente. Esto también se La ALU combinatoria se sintetizó utilizando el software ISE de Xilinx
refiere a los comparadores, la suma y la resta de punto fijo, si se incluyen los y se implementó en un dispositivo Spartan 6. tabla 1 muestra el uso de
paquetes numéricos apropiados. Si se usa notación vectorizada para los recursos resultante.
argumentos, junto con los operadores relevantes en el código VHDL, el Como podemos ver, la ALU combinatoria consume una gran cantidad de
software de síntesis es capaz de identificar las operaciones relevantes e elementos lógicos en la estructura de destino. Este es el precio de la velocidad y el
implementarlas usando generadores de acarreo rápido, lo que es una funcionamiento en paralelo. Especialmente las operaciones de coma flotante y la
solución muy eficiente y rápida.[28]. división (tanto fija como de coma flotante) requieren muchos recursos lógicos.
En el bloque comparador solo se implementaron directamente dos Los tiempos de ejecución de las instrucciones, que se obtuvieron para la ALU
comparadores, es decir, el “Mayor que” y el “Igual”. Las operaciones restantes combinatoria, se presentan en Tabla 2.

Cite este artículo como: M. Chmiel et al., Un PLC basado en IEC 61131-3 implementado por medio de un FPGA, microprocesadores y microsistemas
(2015), http://dx.doi.org/10.1016/j.micpro.2015.11.001
JID: MICPRO
ARTÍCULO EN PRENSA [m5G; 24 de noviembre de 2015; 12:11]

M. Chmiel y col. / Microprocesadores y microsistemas 000 (2015) 1–10 7

A B El hardware torial formaba una estructura que contenía trayectos de señal


extremadamente largos con cientos de niveles lógicos. Los retrasos de la
lógica combinatoria que llegan a 180 ns degradarían la frecuencia del reloj
que controla toda la CPU, si se asumiera que cada instrucción se ejecutó en
CompMux Op un ciclo de reloj. Por lo tanto, se asumió para el diseño que la frecuencia del
reloj se ajustaría a los retrasos de las operaciones más rápidas y que las

Gt Le operaciones de división se ejecutarían en más ciclos de reloj. Para lograr


esto, se implementó un circuito temporizador / contador en la CPU, que
cuenta un número apropiado de ciclos de reloj para cada instrucción y
genera una señal de "Listo" para la unidad de control en la CPU. En el
EGt ELe siguiente paso se intentó optimizar la estructura de la ALU.

ExSub 5.2. Implementación de ALU - la versión sincrónica

SLe
delta MLe La ALU combinatoria, que sirvió como diseño de referencia, demostró
que la ALU puede ser significativamente más rápida que el resto de la CPU.
MShifter Se decidió que la CPU estaría controlada por un reloj de 50 MHz, es decir, el
período de reloj era igual a 20 ns. La mayoría de las instrucciones se pueden

MGt MLe_Sh
ejecutar en un ciclo de reloj. Además, el diseño de la CPU en sí limitaba su
velocidad de funcionamiento. La CPU necesitaba al menos tres ciclos de reloj
para ejecutar todos los pasos de un ciclo de instrucción. Por lo que se
MAddSub decidió optimizar la ALU con respecto al uso de recursos.
Aparte de algunas mejoras menores, se aplicaron dos formas de

EGt RDe optimizar los recursos a la estructura de la ALU combinatoria:

• Reutiliza recursos en el espacio.


• Reutilizar recursos a tiempo, es decir, implementar procesamiento secuencial.

Para introducir la reutilización de recursos en el espacio, se revisó el diseño de la ALU


Norma y se identificaron bloques funcionales que podrían ser compartidos entre subcircuitos
generando resultados para diferentes operaciones. La aplicación de recursos
compartidos en el espacio normalmente obliga a insertar en la estructura del circuito
bloques multiplexores, a menudo de gran tamaño (por ejemplo, 32 bits de ancho). Por
Resultado de NaN tanto, este método es eficaz si los bloques funcionales compartidos tienen un tamaño
grande adecuado. Los circuitos adicionales casi siempre introducen algunos niveles
Figura 8. Estructura del circuito que realiza la suma / resta de punto flotante. lógicos adicionales a las rutas de señal, por lo que los recursos se ahorran a costa de
peores tiempos de ejecución de instrucciones.
tabla 1 Al principio, el uso compartido de recursos en el espacio se aplicó a los
Uso de recursos para la ALU
bloques comparadores. La comparación "Mayor que" se puede obtener restando
combinatoria implementada
los argumentos y probando el signo del resultado. Dicho bloque comparador se
en Spartan 6.
fusionó con el bloque sumador / restador de punto fijo. Además, los bloques
Elementos lógicos Uso
comparadores de coma fija y de coma flotante se pueden fusionar fácilmente. Los
Bloques DSP 8 números de coma flotante positivos se pueden comparar utilizando un
LUT 4592 comparador de coma fija. Para números negativos, se debe agregar un circuito
convertidor simple en las entradas del comparador, ya que la representación de
Tabla 2 punto flotante se basa en el concepto de signo-magnitud. Además, se agregaron
Tiempos de ejecución de instrucciones para la ALU algunos circuitos adicionales para detectar argumentos de punto flotante ilegales
combinatoria implementada en Spartan 6.
(por ejemplo, NAN). Los argumentos ilegales son indicados por el bloque
Instrucción Tiempo de ejecución de la instrucción [ns] comparador usando la bandera de desbordamiento.
El uso compartido de recursos en el espacio también se aplicó a bloques que realizan
Agregar / Sub. Entero 10
multiplicaciones y divisiones. La multiplicación y división de coma flotante se puede
Mult. Entero 32
Div. Entero 173 ejecutar parcialmente utilizando los bloques de coma fija relevantes. Sin embargo, se
Agregar / Sub. Verdadero 27 consideró ineficiente compartir recursos entre el sumador / restador de punto fijo y el
Mult. Verdadero 27 sumador / restador de punto flotante.
Div. Verdadero 128 Mientras se realiza una operación de punto flotante, a menudo es necesario
Lógica de palabras 9
cambiar la mantisa de un resultado temporal. Para ello se utilizaron los mismos
Comparar entero 11
Comparar real 11 bloques, como los bloques que generan los resultados de las operaciones de
Shift / Rotar dieciséis turno y rotación. Los bloques de cambio se basaron en el esquema del
multiplexor.
La aplicación de la ejecución secuencial consiste en insertar en una estructura
El término “tiempo de ejecución de la instrucción” para la ALU combinatoria es de circuito registros paralelos, para almacenar resultados temporales, y utilizar el
de hecho equivalente al retardo de la ruta de la señal que comienza en las mismo circuito para generar resultados temporales en ciclos de reloj posteriores,
entradas de la ALU, termina en las salidas de la ALU y pasa por el subcircuito en lugar de iterar el circuito en el espacio.
responsable de generar el resultado de la operación relevante. Al principio, se agregaron registros paralelos en las entradas de ambos
Como muestra la tabla, para la mayoría de las instrucciones, la ALU es muy argumentos. Gracias a esto, la ALU se volvió más independiente del resto de
rápida y los retrasos no superan los 27 ns. Las operaciones de división son la la CPU, y la unidad de control de la CPU no se bloquea, mientras que la ALU
excepción. El algoritmo de recurrencia de dígitos traducido a combinaciones ejecuta operaciones largas.

Cite este artículo como: M. Chmiel et al., Un PLC basado en IEC 61131-3 implementado por medio de un FPGA, microprocesadores y microsistemas
(2015), http://dx.doi.org/10.1016/j.micpro.2015.11.001
JID: MICPRO
ARTÍCULO EN PRENSA [m5G; 24 de noviembre de 2015; 12:11]

8 M. Chmiel y col. / Microprocesadores y microsistemas 000 (2015) 1–10

A Tabla 3
Uso de recursos para la ALU síncrona.
32 Elementos lógicos Uso (Spartan 6) Uso (Artix 7)

Bloques DSP 4 4
TC a sig-n LUT 4297 4160

magnitud
Cuadro 4 muestra los tiempos de ejecución de todas las instrucciones
32 Datos iniciales
implementadas en la ALU. Los datos presentados en la tabla se refieren únicamente a la
escribir
62 32 31 0 propia ALU. Pueden ser necesarios algunos ciclos de reloj adicionales debido al
funcionamiento de la CPU en su conjunto.
Recordatorio Cociente Para la mayoría de las instrucciones, el resultado se puede generar en un ciclo
Registro de cambio con carga paralela de reloj. Los tiempos de ejecución son similares, a partir de la versión
62 31 combinatoria de la ALU, que se utilizó como referencia. Los tiempos de ejecución
B de las instrucciones se compararon con los datos relevantes para algunas CPU
32 entregadas por los principales fabricantes de PLC.[32,33]. Lamentablemente, los
32
datos sobre el funcionamiento de las ALU en sí no se publican para los PLC
disponibles comercialmente. La única forma de presentar una comparación
4
TC a sig-n realista es comparar los tiempos de ejecución de todos los ciclos de instrucción. El
funcionamiento de la CPU en su conjunto requiere que se agreguen tres ciclos de
magnitud reloj adicionales a los ciclos utilizados por la propia ALU. Los datos relevantes
32 también se enumeran en la tabla.
Desafortunadamente, es una regla que para las CPU más nuevas, que han aparecido
recientemente en el mercado, solo se publican datos de muestra relacionados con el
4 niveles de sumador / s
tiempo de ejecución de las instrucciones. En[34] Se puede encontrar que para la CPU
Sustractores 1215, es decir, la CPU más rápida de la nueva familia de PLC compactos S7-1200 de
Siemens, las instrucciones matemáticas de coma flotante se ejecutan en 2.3 us. De
manera similar, para el S7-1500 encontramos que el tiempo de ejecución para una
instrucción matemática entera es igual a 16 ns, y para matemática de coma flotante
- 64 ns [35]. Los PLC de la serie Quantum de Schneider ejecutan
Figura 9. Estructura del circuito revisado que realiza la división en punto fijo.
instrucciones matemáticas enteras en 45-60 ns e instrucciones de punto
flotante en 400-500 ns[36]. La compañía VIPA que suministra CPU, que se
anuncian como compatibles con los PLC de Siemens en el nivel del lenguaje
Se aplicó procesamiento secuencial a los circuitos que realizaban la de máquina, pero más rápido que el producto original, afirma que sus CPU
división. En la versión combinatoria de la ALU, el subcircuito de división de pueden ejecutar instrucciones aritméticas en números enteros en 10 ns y en
punto fijo contenía 32 niveles de bloques sumadores / sustractores, y esto números de punto flotante, en 60. ns. En[37] se presentó un diseño en
generó un gran retraso de casi 200 ns. El subcircuito de división fue desarrollo, cuyo objetivo era similar - desarrollar un PLC ejecutando
rediseñado. Un diagrama de bloques que representa la estructura del directamente los comandos definidos en la norma IEC 61131-3. Se informó
subcircuito de división rediseñado se presenta enFigura 9. El objetivo del que las instrucciones matemáticas enteras se ejecutan en 20 a 60 ns, y las
trabajo fue reducir el número de bloques sumadores / sustractores, a costa instrucciones matemáticas de punto flotante, en 120 ns.
de ejecutar las operaciones de división en varios ciclos de reloj. Se encontró Como muestran los datos mencionados anteriormente, la ALU presentada es
experimentalmente (es decir, mediante simulación) que el retardo de cuatro comparable con los dispositivos suministrados por los principales fabricantes de
niveles de bloques sumadores / sustractores es aún menor que el período PLC. Hay que tener en cuenta que las CPU de los PLC modernos entregados por
de reloj supuesto de 20 ns. Entonces, la estructura rediseñada del los principales fabricantes se implementan como circuitos integrados de
subcircuito de división de punto fijo contiene cuatro niveles de bloques aplicación específica (ASIC). Por razones tecnológicas, un ASIC puede alcanzar una
sumadores / sustractores, generando un resultado temporal, que se velocidad mucho mejor que la lógica programable. También existe la posibilidad
almacena en un registro paralelo. Se calculan cuatro bits del resultado en un de que la implementación de algunas operaciones (por ejemplo, división) se base
ciclo de reloj, y el subcircuito de división necesita 9 ciclos de reloj para en una memoria ROM, que es fácil y barata de procesar en un ASIC, pero no
generar el resultado (se requiere un ciclo de reloj para escribir argumentos conveniente en la tecnología FPGA. Sin embargo, el diseño presentado no tiene
de entrada en un registro paralelo). Entonces, el tiempo de ejecución es solo arquitectura y se puede migrar fácilmente a un ASIC. En tal caso, se puede esperar
un poco más largo que el tiempo de ejecución en la ALU combinatoria, un aumento significativo de la frecuencia de reloj y, por lo tanto, también los
Finalmente, se agregaron dos operaciones adicionales a la lista de tiempos de ejecución de las instrucciones.
instrucciones ALU: el cuadrado (SQR_R) y la raíz cuadrada (SQRT_R). La
operación cuadrada utiliza el circuito de multiplicación de coma flotante. Sin 6. controlador de E / S
embargo, para implementar la raíz cuadrada, se tuvo que agregar un nuevo
bloque complejo a la estructura ALU. El subcircuito de raíz cuadrada es una El controlador de E / S forma un bloque intermedio entre la unidad central de
implementación de hardware del algoritmo dígito por dígito[31]. La procesamiento y los módulos de señales. Debido a los estándares industriales, los
estructura del circuito es similar a la estructura del bloque de división. Como módulos de señales se implementaron fuera de la FPGA. De hecho, el controlador
el bloque de división presentado enFigura 9, el subcircuito de raíz cuadrada de E / S es responsable de las comunicaciones en tres direcciones: CPU, módulos
calcula cuatro bits del resultado en un ciclo de reloj. de señales y memoria de imágenes. Se da cuenta de la comunicación con la
Las cantidades de recursos requeridos por la ALU rediseñada, unidad central de procesamiento dentro del bucle de control (Sección 4).
dependiendo de la arquitectura de destino, se presentan en Tabla 3. Como
muestra la tabla, el uso de recursos para la ALU rediseñada es similar al de Una vez finalizado el bucle de control, el controlador de E / S realiza la
la versión combinatoria, no optimizada. Sin embargo, hay que tener en comunicación con los módulos de señales. Los datos de entrada se completan y
cuenta que la nueva ALU contiene un subcircuito extra, responsable de los datos de salida se transfieren a los módulos de señales. La transmisión se basa
generar la raíz cuadrada, lo cual es bastante complejo. en el protocolo paralelo simple sincronizado mediante lectura

Cite este artículo como: M. Chmiel et al., Un PLC basado en IEC 61131-3 implementado por medio de un FPGA, microprocesadores y microsistemas
(2015), http://dx.doi.org/10.1016/j.micpro.2015.11.001
JID: MICPRO
ARTÍCULO EN PRENSA [m5G; 24 de noviembre de 2015; 12:11]

M. Chmiel y col. / Microprocesadores y microsistemas 000 (2015) 1–10 9

Cuadro 4
Tiempos de ejecución de instrucciones para la ALU síncrona (Spartan 6 y Artix 7).

Instrucción Tiempo de ejecución de la instrucción

La propia ALU Toda la CPU Siemens S7-312 Siemens S7-319 GE CPE040

Ciclos de reloj Tiempo de ejecución [ns] Ciclos de reloj Tiempo de ejecución [ns]

ADD_I 1 20 4 80 220 10 330


SUB_I 1 20 4 80 220 10 300
MUL_I 1 20 4 80 210 8 350
DIV_I 10 200 13 260 510 50 300
MOD_I 10 200 13 260 430 60 300
ADD_R 2 40 5 100 1100 40 300
SUB_R 2 40 5 100 1100 40 300
MUL_R 1 20 4 80 1110 40 290
DIV_R 9 180 12 240 4850 60 360
ITR 1 20 4 80 700 20 270
RONDA 1 20 4 80 4820 25 310
NEG_I 1 20 4 80 120 5 -
NEG_R 1 20 4 80 200 5 -
Y 1 20 4 80 280 14 440
O 1 20 4 80 280 14 480
XOR 1 20 4 80 280 14 440
EQ_I 1 20 4 80 430 23 350
GT_I 1 20 4 80 430 23 350
GE_I 1 20 4 80 430 23 360
NE_I 1 20 4 80 430 23 360
LE_I 1 20 4 80 430 23 360
LT_I 1 20 4 80 430 23 360
EQ_R 1 20 4 80 1670 46 370
GT_R 1 20 4 80 1670 46 380
GE_R 1 20 4 80 1670 46 380
NE_R 1 20 4 80 1670 46 380
LE_R 1 20 4 80 1670 46 380
LT_R 1 20 4 80 1670 46 380
SL 1 20 4 80 460 19 630
SR 1 20 4 80 460 19 630
RL 1 20 4 80 450 19 360
RR 1 20 4 80 450 19 400
SQR_R 1 20 4 80 1150 40 330
SQRT_R 8 160 11 220 8140 475 290

y escribir señales. El controlador de E / S es responsable del intercambio de datos el prototipo de PLC. El decodificador de instrucciones fue diseñado para ejecutar
inteligente con los módulos de E / S porque el bus de datos interno tiene un ancho de 32 122 comandos. Está construido de una manera muy “flexible” y se puede adaptar
bits, pero el bus de datos externo tiene un ancho de 16 bits. Además, los datos fácilmente a otras implementaciones. El elemento más responsable de esta
analógicos de 16 bits se convierten en un valor de complemento a dos de 32 bits. "flexibilidad" es el contador del programa, que cuenta el número de ciclos de reloj
Dos problemas se relacionan con el controlador de E / S y la configuración del PLC. del sistema necesarios para ejecutar una instrucción en particular. Al ingresar un
En primer lugar, el espacio de direcciones (bus de direcciones externo de 8 bits) de los nuevo valor, el número de ciclos se puede modificar fácilmente. Las instrucciones
módulos de señales es incompatible con el mapa de memoria del PLC. Esto se debe a que más largas son cálculos de punto flotante, así como multiplicaciones y divisiones.
un mapa de memoria de PLC está diseñado para experimentos y se ampliará en el futuro.
El segundo problema es que en esta configuración no hay información sobre la presencia La ALU apoya a la unidad de ejecución principal en la ejecución de operaciones
del módulo. El controlador de E / S debe comprobar todo el espacio de direcciones. La aritméticas y lógicas en palabras de 32 bits. La ALU puede ejecutar 34 operaciones,
transmisión simple será reemplazada en el futuro por un protocolo inteligente de que incluyen las operaciones lógicas básicas, comparadores y las cuatro
intercambio de datos. El controlador de E / S se basa en una RAM de bloque de dos operaciones aritméticas básicas. Los comparadores y las operaciones aritméticas
puertos de forma análoga a la memoria presentada enSeccion 3. se pueden realizar para dos tipos de datos: entero, representado en formato de
complemento a dos, y real, representado como un número de coma flotante
compatible con la norma IEEE 754.
7. Conclusiones La comparación de la CPU presentada con los productos entregados a la
marca por los principales fabricantes de PLC demuestra que es posible
El proceso de diseño de un controlador lógico programable se muestra en el lograr un rendimiento similar utilizando tecnología lógica programable, y en
documento. El prototipo de PLC diseñado cumple con la norma EN 61131-3 a nivel particular dispositivos FPGA, como plataforma de hardware. Los trabajos
de lenguaje de máquina. Las instrucciones son unarias o sin argumentos. El PLC futuros se concentrarán en optimizar la estructura del diseño, lo que se
desarrollado se implementa mediante un dispositivo FPGA en forma de System on puede lograr al incluir recursos compartidos en mayor medida y / o
Chip. Las unidades de hardware como el controlador de E / S soportan la unidad canalización. También se planea ampliar el conjunto de instrucciones
central de procesamiento para un trabajo más efectivo. Sin embargo, todas las implementado en la ALU hasta ahora, a operaciones más complejas, por
operaciones se implementan completamente en hardware. El diseño se preparó ejemplo, logaritmo, exponente y funciones trigonométricas.
como un conjunto de modelos sintetizables Verilog y VHDL.

Expresiones de gratitud
La unidad central de procesamiento incluye una unidad aritmética-lógica que
soporta operaciones de coma flotante y una unidad lógica de bits. Es muy
Este trabajo fue apoyado por la financiación del Ministerio de Ciencia y
importante que la unidad lógica de bits ejecute operaciones dentro de un ciclo de
Educación Superior para las actividades reglamentarias (decisión nº 8686 / E-367 /
reloj. Es de 80 ns para el oscilador de reloj de 50 MHz que suministra la FPGA en
S / 2015 de 19 de febrero de 2015).

Cite este artículo como: M. Chmiel et al., Un PLC basado en IEC 61131-3 implementado por medio de un FPGA, microprocesadores y microsistemas
(2015), http://dx.doi.org/10.1016/j.micpro.2015.11.001
JID: MICPRO
ARTÍCULO EN PRENSA [m5G; 24 de noviembre de 2015; 12:11]

10 M. Chmiel y col. / Microprocesadores y microsistemas 000 (2015) 1–10

Referencias [33] General Electric Company (2015), Intelligent Platforms, Programmable Control
Products, PACSystems, RX7i & RX3i CPU Reference Manual, GFK-2222 W, agosto de
[1] MS Boggs, TL Fulton, S. Hausman, G. McNabb, A. McNutt, SW Stimmel (2003). Controlador 2015.
lógico programable: método, sistema y aparato. Patente de Estados Unidos Nº US [34] Siemens AG (2012). Controlador programable Simatic S7-1200, Manual de sistema.
6.574.743 B1. [35] Siemens AG (2013). Datos técnicos del Simatic S7-1500.
[2] Siemens, Controlador programable Simatic S7-200 - Manual de sistema, Siemens AG, [36] Schneider Electric, plataforma Modicon Quantum Automation, Hot Standby System
Alemania, 2008. Unity Pro, 2013.
[3] Altera Corporation (2013). Catálogo de productos Altera, (http://www.altera.com/ literatura / sg / [37] VIPA GmbH (2014). VIPA System 300S SPEED7 - CPU 314-6CF02, Manual, mayo de
product-catalog.pdf consultado por última vez el 17.11.15). 2014.
[4] Xilinx Inc. (2013). Guía de selección de productos de arquitectura UltraScale. (http: // www. xilinx.com/
Miroslaw Chmiel recibió el M.Sc. grado y el doctorado.
publications/prod_mktg/ultrascale_product_selection_guide.pdfconsultado por última vez el
Licenciado en Ciencias Técnicas por la Facultad de
17.11.15).
Automática, Electrónica e Informática de la Universidad
[5] K.-H. John, M. Tiegelkamp, IEC 61131-3: Programación de sistemas de automatización
Tecnológica de Silesia en 1992 y 2003, respectivamente.
industrial, Springer, 2010.
Ahora trabaja como profesor asistente en el Instituto de
[6] Rockwell Automation (2012). Controladores Logix5000 Conformidad con IEC 61131-3.
Electrónica de la Universidad Tecnológica de Silesia, Polonia.
Publicación de Rockwell Automation 1756-PM018C-ES-P.
Sus intereses de investigación incluyen el diseño y la
[7] Cenelec, EN 61131-3, Controlador programable - Parte 3: Lenguajes de
aplicación de circuitos digitales y, en particular, controladores
programación, Estándar internacional, Centro de gestión, Avenue Marnix 17, B-1000
lógicos programables y dispositivos lógicos programables.
Bruselas, 2013.
[8] A. Milik, (2006). Síntesis de alto nivel: implementación de hardware reconfigurable de
controlador lógico programable, PDeS'06, Brno, República Checa, 14-16 de febrero de 2006,
138–143.
[9] J. Mocha, D. Kania, Implementación hardware de un programa de control en estructuras Jozef Kulisz recibió el M.Sc. grado y doctorado Licenciado en
FPGA, Electr. Rev. 88 (12/2012) (2012) 95–100 (en polaco). Ciencias Técnicas por la Facultad de Automática, Electrónica e
[10] M. Chmiel, J. Mocha, E. Hrynkiewicz, A. Milik, Unidades centrales de procesamiento para la Informática de la Universidad Tecnológica de Silesia en 1992 y
implementación de PLC en Virtex-4 FPGA, en: Actas del 18o Congreso Mundial de la IFAC, Milán, 2003, respectivamente. Ahora trabaja como profesor asistente en
Italia, 28 de agosto de 2001 al 2 de septiembre. el Instituto de Electrónica de la Universidad Tecnológica de Silesia,
[11] Z. Hajduk, J. Sadolewski, B. Trybus, plataforma de ejecución basada en FPGA para el software Polonia. Sus intereses de investigación incluyen el diseño y la
de control IEC 61131-3, Electr. Rev. (2011) ISSN 0033-2097. Vol. 87. No. 8/2011. aplicación de circuitos digitales y, en particular, dispositivos lógicos
[12] R. Czerwinski, M. Chmiel, W. Wygrabek, implementación FPGA, de controlador lógico programables, lenguajes de descripción de hardware y
programable que cumple con EN 61131-3, en: Actas de la 12a Conferencia IFAC / IEEE sobre controladores lógicos programables.
dispositivos programables y sistemas integrados, PDeS'2013, Velke Karlovice, República
Checa, 2013 25-27 de septiembre de 2013, págs. 24–29.
[13] E. Hrynkiewicz, M. Chmiel, Controlador lógico programable: estructura básica e idea
de programación, Electr. Rev. (2012) 98–101 Vol. 88. No. 11b / 2012.
[14] E. Hrynkiewicz, M. Chmiel, Acerca del controlador lógico programable: paso a paso, Robert Czerwinski recibió el M.Sc. grado y el doctorado.
Electr. Rev. (2012) 303–307 Vol. 88. No. 9a / 2012. Licenciado en Ciencias Técnicas por la Facultad de Automática,
[15] T. Klopot, P. Laszczyk, K. Stebel, J. Czeczot, Implementación de bloque de función flexible del Electrónica e Informática de la Universidad Tecnológica de Silesia,
controlador adaptativo basado en equilibrio como alternativa potencial para aplicaciones Polonia, en 2001 y 2006, respectivamente. Ahora trabaja como
industriales basadas en PID, Trans. Inst. Meas. Control. 36, (8) (2014) 1098-1113. profesor asistente en el Instituto de Electrónica de la Universidad
[dieciséis] M. Chmiel, E. Hrynkiewicz, M. Muszynski, The way of ladder diagram analysis Tecnológica de Silesia, Polonia. Sus intereses de investigación
for small compact programmable controller, in: Proceedings of the 6th Russian- incluyen dispositivos lógicos programables, síntesis lógica y
Korean International Symposium on Science and Technology, KORUS-2002, optimización.
Novosybirsk, Rusia, 2002, págs. 169-173.
[17] SL Carrillo, AZ Polo, MP Esmeral, Diseño e implementación de un microprocesador
embebido compatible con lenguaje IL de acuerdo a la norma IEC 61131-3, en:
Proceedings of the 2005 International Conference on Reconfigurable Computing
and FPGAs (ReConFig 28-30 Sept. 2005), IEEE Computer Society, 2005, págs. 18–23.
Adrian Krzyzyk recibió la licenciatura en ingeniería electrónica en
[18] M. Okabe, Desarrollo de procesador que ejecuta directamente el lenguaje IEC Ciencias Técnicas de la Facultad de Automática, Electrónica y
61131-3, en: Actas de la Conferencia Anual de SICE, The University Electro- Ciencias de la Computación de la Universidad Tecnológica de
Communications, 20-22 de agosto de 2008, Tokio, Japón, 2008, págs. 2215–2218. Silesia, Polonia, en 2014. Actualmente, es estudiante de maestría
[19] M. Chmiel, E. Hrynkiewicz, Observaciones sobre estructuras de CPU de bytes de bits en paralelo de en la Universidad Tecnológica de Silesia y está en período de
controladores lógicos programables, en: MA Adamski, A. Karatkevich, M. Wegrzyn (Eds.), Design of prueba. en Cadence Design Systems. Sus intereses de investigación
Embedded Control Systems, Springer, 2005, págs. 231–242. Sección V. se centran en la síntesis lógica.
[20] M. Chmiel, Sobre la reducción del tiempo de respuesta del PLC, Boletín de la Academia
Polaca de Ciencias-Ciencias Técnicas 56 (3) (2008) 229-238.
[21] M. Chmiel, E. Hrynkiewicz, Operación concurrente de los procesadores en CPU bit-
byte de un PLC, Control Cybern. 39 (2) (2010) 559–579.
[22] ARM (2008). Cortex-M3, Manual de referencia técnica.
[23] Xilinx (2011). Recursos de RAM de bloque FPGA Spartan-6, Guía del usuario.
Marcin Rosol recibió la licenciatura en ingeniería electrónica en
[24] M. Chmiel, R. Czerwinski, P. Smolarek, PLC basado en IEC 61131-3 implementado
Ciencias Técnicas de la Facultad de Automática, Electrónica e
mediante FPGA, en: Actas de la 13a Conferencia internacional IFAC / IEEE sobre
Informática de la Universidad Tecnológica de Silesia, Polonia, en
dispositivos programables y sistemas integrados, PDeS'15, 13-14 de mayo , 2015,
2014. Actualmente es estudiante de maestría en la Universidad
Cracovia, Polonia, 2015, págs. 383–388.
Tecnológica de Silesia. También está en período de prueba en
[25] JP Deschamps, GJA Bioul, GD Sutter, Síntesis de circuitos aritméticos, FPGA, ASIC y
Cadence Design Systems. Sus intereses de investigación se centran
sistemas integrados, Wiley Interscience, Hoboken, 2006.
en la síntesis lógica.
[26] IEEE (2008). IEEE 754-2008 - Estándar para aritmética de coma flotante. DOI
10.1109 / IEEESTD.2008.4610935.
[27] J. Kulisz, M. Chmiel, A. Krzyzyk, M. Rosol, Una implementación de hardware de operaciones
aritméticas para un controlador lógico programable basado en FPGA, en: Actas de la 13a
Conferencia de IFAC sobre dispositivos programables y sistemas integrados, PDeS ', 13a. –
15 de mayo de 2015, Cracovia, Polonia, 2015, págs. 471–476.
[28] Xilinx Inc. (2011). Guía del usuario de FPGA Spartan-3 Generation UG331 (v1. 8). Patryk Smolarek recibió la licenciatura en ingeniería electrónica
[29] Xilinx Inc. (2011). Virtex-6 FPGA DSP48E1 Guía del usuario UG369 (v1. 3). en Ciencias Técnicas de la Facultad de Automática, Electrónica y
[30] J. Kulisz, J. Mikucki, Un generador de núcleo IP para circuitos que realizan Ciencias de la Computación de la Universidad Tecnológica de
multiplicación aritmética, en: Actas de la 12a Conferencia IFAC / IEEE sobre Silesia, Polonia, en 2014. Actualmente es estudiante de maestría en
dispositivos programables y sistemas integrados, PDeS'2013, 25-27 de septiembre la Universidad Tecnológica de Silesia y está en período de prueba
de 2013, VelkeKarlovice, República Checa , 2013, págs. 59–64. en Cadence. Sistemas de diseño. Sus intereses de investigación
[31] L. Yamin, C. Wanming, Implementación de raíz cuadrada de punto flotante de precisión incluyen la síntesis lógica y la verificación.
simple en FPGA, en: Actas del Simposio IEEE sobre FPGA para máquinas informáticas
personalizadas, Napa, California, EE.UU., 1997, págs. 226–232.
[32] Siemens AG (2012). Lista de operaciones Simatic S7-300, CPU 312, CPU 314, CPU 315-2 DP,
CPU 315-2 PN / DP, CPU 317-2 PN / DP, CPU 319-3 PN / DP, CPU IM151-8 PN / DP ,
CPU IM 154-8 PN / DP.

Cite este artículo como: M. Chmiel et al., Un PLC basado en IEC 61131-3 implementado por medio de un FPGA, microprocesadores y microsistemas
(2015), http://dx.doi.org/10.1016/j.micpro.2015.11.001

También podría gustarte