02 SPLDs
02 SPLDs
02 SPLDs
Marzo / 2018
1
Introducción
Los Dispositivos Lógicos Programables Simples (SPLD’s) proporcionan la
flexibilidad que no se consigue con lógica estándar (TTL y CMOS).
2
Características
◦ Los SPLD’s se basan en matrices programables. Una matriz
programable es una red de conductores distribuidos por filas y
columnas, con un fusible en cada intersección.
3
Características
4
Tipos de SPLD’s
PROM (Programmable Read Only Memory)
5
Tipos de SPLD’s
PAL (Programmable AND-Array Logic)
6
PAL y GAL
Los dispositivos lógicos programables que se emplean con mayor
frecuencia son la PAL y la GAL.
En el nombre del dispositivo se especifican algunas características,
ejemplos:
◦ PAL16L8 – Es una PAL con 16 entradas y 8 salidas, las salidas son
lógicas (combinacionales).
◦ PAL16R8 – Es una PAL similar a la anterior pero las salidas con
registros (flip-flops).
◦ GAL16V8 – Es una GAL con 16 entradas y 8 salidas versátiles, es
decir, pueden ser tanto combinacionales como con registro.
(hojas de características)
Otros dispositivos: PALCE16V8, PALCE22V10, GAL18V10, GAL20V8 ,
GAL22V10 y GAL26V12.
7
Programación de SPLD’S
El comportamiento del circuito se define con algún lenguaje de descripción de
hardware (HDL).
Las herramientas de software ayudan en la edición de la descripción, así como
en la compilación y simulación del circuito.
Algunas herramientas para SPLD’s son:
◦ CUPL: Compilador universal para lógica programable.
◦ ABEL: Lenguaje Avanzado para expresiones booleanas.
◦ OPAL, PALASM, TANGO-PLD, etc.
8
WinCUPL
CUPL: Es un Compilador universal para Lógica Programable, se emplea para
programar o simular SPLDs.
Con CUPL es posible compilar descripciones de circuitos combinacionales o
secuenciales.
WinCUPL es una versión de CUPL para windows. Es un entorno desarrollado
por Atmel Corporation. (http://www.atmel.com/tools/wincupl.aspx)
Un circuito combinacional se describe por medio de su ecuación booleana o
con su tabla de verdad.
Para los circuitos secuenciales se pueden emplear ecuaciones para los
elementos de estado. Aunque también es posible una descripción a través
de una máquina de estados finitos, conservando la estructura de la solución
del problema.
9
WinCUPL
En WinCUPL, los archivos con las descripciones tienen extensiones .PLD.
El compilador genera los archivos siguientes:
◦ .ext es una extensión a las variables que las vincula con las características de
los dispositivos programables [opcional].
12
EXTENSIONES
DE LAS
VARIABLES
EN WINCUPL
13
Uso de las extensiones de las
variables
14
Variables indexadas
Las variables son indexadas si finalizan con un número, referido como
índice, pueden usarse para representar buses. Por ejemplo, para: A0 A1 A2
A3 A4 A5 A6 A7, puede usarse A0..A7 (ó simplemente A0..7).
15
Agrupación de Variables
Con la palabra reservada FIELD se hace referencia a un grupo de
variables (indexadas o no) para tratarlas como una variable
única de varios bits, por ejemplo:
16
Descripciones en wincupl
Una descripción en WinCUPL debe iniciar con:
Encabezado: Se indica el nombre del programa, el dispositivo a
ser programado (usaremos g22v10), el autor, la fecha y otros
datos (se genera en forma automática).
Asignación de terminales: Se asignan las terminales de entrada y
salida del dispositivo.
PIN 1 = A ; /* Comentarios de ayuda*/
17
Ejemplo 1: Circuito combinacional
Se describirá mediante CUPL el siguiente circuito:
a
f
b
c
La ecuación para el circuito es:
F=(Not(a) AND b) OR (Not(b) AND c)
Con la notación de CUPL:
F=(!a&b)#(!b&c)
18
Circuito combinacional
Se utilizará una GAL22V10:
Entradas:
◦ Pin 2 – a
◦ Pin 3 – b
◦ Pin 4 – c
Salida:
◦ Pin 23 – f
19
Simulación en WinCUPL
1. Iniciar un nuevo archivo de simulación a partir del archivo PLA
2. Agregar señales al espacio de simulación
3. Agregar vectores
4. Definir los valores de las entradas
5. Ejecutar la simulación
20
Simulación en WinCUPL
21
Tablas de verdad
Es otra manera de describir circuitos combinacionales, CUPL
reserva a la palabra TABLE para estas descripciones.
Con excepción de las terminales de los dispositivos y la definición de las variables indexadas,
que siempre se definen en decimal, para otras operaciones CUPL maneja los números en
hexadecimal, a menos que se especifique otra base utilizando el prefijo correcto.
23
Bases numéricas
Prefijo Base Ejemplo Valor (decimal)
‘B’ Binario (2) ‘B’1101 13
‘O’ Octal (8) ‘O’123 83
‘D’ Decimal (10) ‘D’872 872
‘H’ Hexadecimal (16) ‘H’A2 162
‘b’110X
‘O’2X3
‘h’12AX
24
Ejemplo 2: Decodificador de 3 a 8
Circuito con 3 entradas y 8 salidas, sólo una salida está activa.
A2 A1 A0 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
0 0 0 0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0 0 1 0
0 1 0 0 0 0 0 0 1 0 0
0 1 1 0 0 0 0 1 0 0 0
1 0 0 0 0 0 1 0 0 0 0
1 0 1 0 0 1 0 0 0 0 0
1 1 0 0 1 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0
Simular en WinCUPL y en PROTEUS.
25
Ejemplo 2: Decodificador de 3 a 8
26
Ejemplo 2: Decodificador de 3 a 8
27
Ejemplo 2: Decodificador de 3 a 8
28
Funciones en WinCUPL
Si se requieren tareas repetitivas, es posible el uso de funciones. Por
ejemplo, una función para un sumador de 1 bit se define como:
29
Funciones en WinCUPL
30
Funciones en WinCUPL
Un circuito complejo se crea a partir de llamadas a funciones:
/* Un sumador de 4 bits, con acarreo */
Z1 = sum_1Bit(X1, Y1, ‘b'0, C1); /* El acarreo inicial es ‘b'0 */
Z2 = sum_1Bit(X2, Y2, C1, C2);
Z3 = sum_1Bit(X3, Y3, C2, C3);
Z4 = sum_1Bit(X4, Y4, C3, C4); /* En C4 está el acarreo final */
31
Funciones en WinCUPL
32
Máquinas de Estados Finitos
Una Máquina de Estados Finitos (MEF) es un circuito digital,
el cual recorre una secuencia de estados en un orden
predefinido.
33
MEF
Una MEF se compone de dos bloques principales, como se muestra en la
figura:
34
Máquina de Mealy
Las salidas dependen de las entradas y del estado actual.
35
Máquina de Moore
Las salidas sólo dependen del estado actual.
36
MEF en WinCUPL
Para definir una máquina de estados en CUPL primero se determinan
los bits con los que se representarán los estados válidos, para ello se
crea un FIELD.
$define s0 ‘b’0...0
$define s1 ‘b’0…1
...
$define sk ‘b’1…1
37
FSM en WinCUPL
Con la palabra reservada SEQUENCE se determina la secuencia de estados, de
acuerdo con la siguiente sintaxis:
SEQUENCE Estados {
PRESENT s0
NEXT s1; /* Avance incondicional */
PRESENT s1
IF (condition1) NEXT s2;/* Avance condicionado */
DEFAULT s1;
PRESENT s2
IF (condition2) NEXT s3 OUT SalidaX; /* Avance y salida */
DEFAULT NEXT s4; /* condicionada */
.
.
}
38
Ejemplo: reconocer una
secuencia serial de 5 bits
39
Ejemplo: reconocer una
secuencia serial de 5 bits
40
Ejemplo: reconocer una
secuencia serial de 5 bits
41
Ejemplo 3: Contador 0 a 3
Las salidas están en los mismos bits de
estado.
estados.ar = 0;
$define S0 'b'00
estados.sp = 0;
$define S1 'b'01
$define S2 'b'10
$define S3 'b'11
42
Ejemplo 4: Detección de un flanco de
subida
Es una máquina de
Mealy porque la
salida se genera
durante la transi-
ción.
43
Ejemplo 5: Detección de un flanco de
subida (versión 2)
Es una máquina de
Moore porque la
salida sólo depende
del estado actual.
44
Ejercicios:
1. Multiplexor de 2 a 1.
2. Decodificador de BCD a 7 segmentos.
3. Comparador de datos de 4 bits.
4. Generador de paridad Par/Impar.
5. Contador Up/Down de 3 bits.
6. Registro de corrimiento, entrada serial y salida paralela.
7. Sistema con dos semáforos (que el color verde tarde el doble de tiempo
que el amarillo).
8. Control automático de una bomba de agua
9. Seguidor de línea con dos motores independientes
10. Control de una puerta automática
45