0% encontró este documento útil (0 votos)
36 vistas37 páginas

Dispositivos Lógicos Programables SPLD

Este documento presenta una introducción a los dispositivos lógicos programables simples (SPLD). Describe las características de los SPLD, incluyendo los tipos comunes como PAL, GAL, PROM y PLA. Explica cómo se pueden programar los SPLD usando herramientas de software como CUPL y describiendo el comportamiento deseado a través de ecuaciones booleanas o tablas de verdad.

Cargado por

j.luis.cf3125
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
36 vistas37 páginas

Dispositivos Lógicos Programables SPLD

Este documento presenta una introducción a los dispositivos lógicos programables simples (SPLD). Describe las características de los SPLD, incluyendo los tipos comunes como PAL, GAL, PROM y PLA. Explica cómo se pueden programar los SPLD usando herramientas de software como CUPL y describiendo el comportamiento deseado a través de ecuaciones booleanas o tablas de verdad.

Cargado por

j.luis.cf3125
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

UNIVERSIDAD TECNOLÓGICA DE LA MIXTECA

Instituto de Electrónica y Mecatrónica

2. DISPOSITIVOS LÓGICOS
PROGRAMABLES SIMPLES
SISTEMAS DIGITALES 1

M. C. Felipe Santiago Espinosa

Octubre / 2018
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).

• Los primeros SPLD’s se usaron para hacer partes de diseños que


no correspondían con ningún componente existente en el
mercado.

• Una aplicación típica para estos circuitos es la decodificación


de direcciones desde un procesador, para el manejo de
información de una memoria o de periféricos mapeados a
memoria.

• Su uso reduce el número de chips requeridos por una


implementación basada en circuitos LSI, manteniendo una
inversión mínima de capital, cuando un ASIC a medida es la
otra alternativa.
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.

Matriz OR (a) Sin programar y (b) Programada.


3
CARACTERÍSTICAS

Matriz AND (a) Sin programar y (b) Programada.

4
TIPOS DE SPLD’S

• PROM (Programmable Read Only Memory)

• PLA (Programmable Logic Array)

5
TIPOS DE SPLD’S

• PAL (Programmable AND-Array Logic)

• GAL (Generic 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.

• 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.

• Con la descripción libre de errores se crea un archivo de


configuración que será descargado en el chip para su
evaluación real.
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.

 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. 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
 Los archivos con descripciones en WinCUPL tienen
la extensión .PLD.

 El compilador genera los archivos siguientes:

 Un archivo JEDEC ([Link]) para descargarse con un


programador o emplearse con un simulador.
 Un archivo absoluto ([Link]) para usarse por CSIM, el
módulo de simulación de CUPL.
 Un archivo de lista ([Link]) que muestra los errores en
el archivo fuente original.
 Un archivo de documentación ([Link]) que
contiene ecuaciones lógicas expandidas, tablas de
símbolos, términos productos e información del mapa de
fusibles.
 Un archivo en formato PLA ([Link]) para ser usado
por otros módulos o programas técnicos.

10
ECUACIONES BOOLEANAS
• Se pueden emplear los 4 operadores lógicos
fundamentales: NOT, AND, OR y XOR:

Operador Descripción Ejemplo Precedencia


! NOT !A 1
& AND A&B 2
# OR A#B 3
$ XOR A$B 4

• Una ecuación lógica tiene la forma:

[ ! ] var [ .ext ] = exp;


11
Donde:

• Var es una variable o lista de variables indexadas o no


indexadas. Si se trata de una lista, la expresión se
aplica a los diferentes elementos de la lista.

• .ext es una extensión a las variables que las vincula


con las características de los dispositivos programables
[opcional].

• Exp es una expresión, es decir, una combinación de


variables y operadores.

• = el operador de asignación que se aplica a una


variable o a un conjunto de variables

• ! El operador de complemento [opcional]. Para


generar salidas con lógica negada.
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 (o simplemente A0..7).

• El índice es un número entre 0 y 31, siendo el bit 0 el


menos significativo.

• Un operador puede aplicarse a un conjunto de


variables indexadas, por ejemplo, las expresiones:

[A3, A2, A1, A0] : &  A3 & A2 & A1 & A0


[B3 .. B0] : #  B3 # B2 # B1 # B0
[C3, C2, C1, C0] : $  C3 $ C2 $ C1 $ C0
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:

FIELD address = [ A3 .. A0];


FIELD modo = [ini, asc, des ];

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.
• Ejemplo: PIN 1 = A ; /* Comentarios de ayuda*/

• Es posible emplear variables indexadas en la definición de entradas,


por ejemplos:

PIN [1..4] = [a0..a3]; /* Entrada de 3 bits */

PIN [1..4] = [a3..a0]; /* Debe aparecer el índice 0 */


17
EJEMPLO 1: CIRCUITO
COMBINACIONAL
• Se describirá mediante CUPL el siguiente circuito:
a

f
b
c
• La ecuación para el circuito es:

• Con la notación de CUPL:

18
CIRCUITO COMBINACIONAL

• Se utilizará una GAL22V10:

• Entradas:
• Pin 1 – a
• Pin 2 – b
• Pin 3 – 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

Simulación en ISIS de Proteus


1. Definir el circuito
2. Cargar el archivo JED en el PAL
3. Ejecutar la simulación
20
TABLAS DE VERDAD
• Es otra manera de describir circuitos combinacionales,
CUPL reserva a la palabra TABLE para estas
descripciones.

• Primero se define un campo (FIELD) para las variables


de entrada y otro para las variables de salida. Después
se especifican una a una las asignaciones de las salidas
ante las diferentes entradas (Es posible generar el
código en forma automática).

• Se pueden considerar condiciones no importa para las


entradas pero no para las salidas.

• Una lista de valores de entrada se puede considerar


para generar la misma salida.
21
SINTAXIS DE UNA TABLA DE VERDAD

FIELD ent = [D3..0]; /* Número en binario */


FIELD sal = [Q7..0]; /* Número en BCD */

TABLE ent => sal {


0=> 00; 1=>01; 2=>02; 3=>03;
4=>04; 5=>05; 6=>06; 7=>07;
8=>08; 9=>09; A=>10; B=>11;
C=>12; D=>13; E=>14; F=>15;
}

• Las terminales de los dispositivos y las variables indexadas 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.

22
BASES NUMÉRICAS

Valor
Prefijo Base Ejemplo
(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

 En binario, octal o hexadecimal pueden utilizarse


condiciones no importa (“X”), por ejemplo:

‘b’110X
‘O’2X3
‘h’12AX
23
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.


24
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:

function sum_1Bit (X, Y, Cin, Cout) {


Cout = Cin & X # Cin & Y # X & Y; /* Carry */
sum_1Bit = Cin $ (X $ Y); /* Suma */
}

25
FUNCIONES EN WINCUPL

Un circuito complejo se crea a partir de llamadas a


funciones (bloques simples):
/* Un sumador de 4 bits, con acarreo */
Z0 = sum_1Bit(X0, Y0, ‘b'0, C0);
/* El acarreo inicial es ‘b'0 */

Z1 = sum_1Bit(X1, Y1, C0, C1);


Z2 = sum_1Bit(X2, Y2, C1, C2);
Z3 = sum_1Bit(X3, Y3, C2, C3);
/* En C3 está el acarreo final */

Nota: Simular el sumador de 4 bits.

26
EJEMPLO 3: FUNCIONES

Empleando funciones, desarrolle un sumador restador


de 4 bits:

27
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.
• El circuito tiene memoria, es decir, sus salidas no
solo dependen de las entradas, sino que también
de los estados anteriores.
Entrada/Salida:
x/y

28
MEF

 Una MEF se compone de dos bloques principales, como


se muestra en la figura:

 Para los elementos de memoria se emplean flip-flops, la


máquina es síncrona porque los flip-flops cambian su
estado en cada flanco de reloj.

29
MÁQUINA DE MEALY

• Las salidas dependen de las entradas y del estado


actual.

30
MÁQUINA DE MOORE

• Las salidas sólo dependen del estado actual.

31
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.

FIELD Estados = [Qn..Q0];

[Qn..0] son terminales de salida, según el número de estados.

 Cada estado puede tener un nombre simbólico, se


establece con la palabra $define

$define s0 ‘b’0...0
$define s1 ‘b’0…1
...
$define sk ‘b’1…1
32
MEF 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 NEXT s1;
PRESENT s2
IF (condition2) NEXT s3 OUT SalidaX; /* Avance y salida */
DEFAULT NEXT s4; /* condicionada */
.
.
}

33
EJEMPLO 4: CONTADOR 0 A 3

• Las salidas están en los mismos


bits de estado.

• Los flip-flops de salida cuentan


con un reset asíncrono (ar) y un
preset síncrono (sp). Por lo
FIELD estados = [Q1..Q0]; tanto, se debe agregar:

$define S0 'b'00 [Link] = 'b'0;


$define S1 'b'01 [Link] = 'b'0;
$define S2 'b'10
$define S3 'b'11

34
EJEMPLO 5: DETECCIÓN DE UN FLANCO DE
SUBIDA

Es una máquina de Mealy


porque la salida se genera
durante la transición.

Codificar y simular mediante


WinCUPL

35
EJEMPLO 6: 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.

Codificar y simular mediante


WinCUPL.

Lo más simple es emplear


una secuencia (sequence) y
después una tabla (table).

36
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

37

También podría gustarte