Sistemas digitales Octubre '09- Febrero '10
MC Jacob J. Vásquez Sanjuan
JJVS-09
1
Diseño e implementación de circuitos lógicos con WinCupl
Circuitos secuenciales
Circuitos combinacionales
JJVS-09
2
Diseño e implementación de circuitos lógicos con WinCupl
Circuitos secuenciales
Circuitos combinacionales
JJVS-09
2
Circuitos secuenciales Considere la siguiente ecuación Y = ABC AB C A B C A BC AB C
reduzca la ecuación anterior empleando mapas de Karnaugh. Y = A B C
JJVS-09
3
Implementación mediante multiplexores ABC AB C A B C A BC AB C =
∑ 0,1,2,3,6
A B C 5V
JJVS-09
Y D7 D6 D5 D4 D3 D2 D1 D0 4
Arquitectura de una PROM
JJVS-09
5
Implementación mediante una ROM C
B A
Y =
∑ 0,1,2,3,6
1
1
U8A 74LS04
2
1
U8A
U8A
74LS04
2
0
74LS04
2
U7A 1 2 13
U7A
Dato 1 1 1 1 0 0 1 0
/A/BC
12
/AB/C
12
/ABC
12
A/B/C
12
A/BC
12
AB/C
12
ABC
74LS11
74LS11 U7A 1 2 13 74LS11 U7A 1 2 13 74LS11 U7A 1 2 13 74LS11 U7A 1 2 13
U7A
74LS11
1 2 13 74LS11
JJVS-09
12
DIODE
1 2 13
Dirección 0 1 2 3 4 5 6 7
/A/B/C
74LS11
1 2 13
U7A
12
6
Arquitectura PAL
JJVS-09
7
Implementación con PAL A
B
C
1 1
1
U8A
U8A
74LS04
U8A
74LS04
74LS04
2 2
2
D22
R2
DIODE
D22 R U7A R2
1 2 13
DIODE
12
D22 R
74LS11
R2
DIODE D22
Y1=/A/B/C+/A/BC+/AB/C
R R2
DIODE
D22 R U7A R2
DIODE
U9A
1 2 13
U10A
1 2 13
12
12
1
2
D22
74LS04
R
74LS11
R2
74LS27
DIODE
R R2
DIODE
R
Y =
U7A
R2
1 2 13
DIODE
12
R
74LS11
R2
DIODE
R R2
∑ 0,1,2,3,6
DIODE
R U7A R2
DIODE
1 2
12
13 R
74LS11
R2
DIODE
R R2
DIODE
R U7A R2
U9A
1
DIODE
U10A
1
2 13
12
2 13
12
1
2 74LS04
R R2
74LS11
74LS27
Y1=/ABC+AB/C
DIODE
R R2
R R2
U7A 1 2
12
13 R
74LS11
R2
R
JJVS-09 0
8
Arquitectura PLA
JJVS-09
9
FPGA
JJVS-09
10
Tipos de PAL El circuito de salida de una PAL se llama MACROCELDA. En general, existen 3 tipos de macroceldas:
Combinacional (L).
Combinacional con flip-flops a las salidas (R).
Únicamente genera funciones lógicas. Las salidas pueden ser tomadas como entradas. 16L8 = 16 entradas/salidas y 8 salidas, cada salida se forma con 8 minitérminos.
Las salidas que pueden ser combinacionales. Un número de salidas están conectadas a flip - flops. 16R4=16 entradas/salidas con 4 flip-flops.
Configurable, combinacional o salida a flip - flop (V)
JJVS-09
Cada una de las salidas es configurable, a ser de flip - flop o puramente combinacional. 22V10 = 22 entradas/salidas y 10 salidas configurables. 11
Macrocelda configurable
JJVS-09
12
GAL 22V10
Tiene 12 entradas (Terminales 1-11 y 13).
Tiene 10 salidas/entradas (14 - 23).
La terminal 1 siempre es la fuente de reloj para circuitos secuenciales. Se puede generar hasta 120 minitérminos: 8 en las salidas 14 y 23. 10 en las salidas 15 y 22. 12 en las salidas 16 y 21. 14 en las salidas 17 y 20. 16 en las salidas 18 y 19.
Permite Reset síncrono y asíncrono, y se puede hacer retroalimentación de las salidas a las entradas. JJVS-09
13
GAL 22V10
JJVS-09
14
WinCUPL (Universal Compiler for Programmable Logic) El WinCUPL es un software de Atmel que genera el archivo para programar PAL’s y GAL’S. Un programa en WinCUPL, consta de 3 bloques principales, que son:
Encabezado. Se indica el nombre del programa, el dispositivo a ser
programado, el autor, la fecha y otros datos.
Asignación de terminales . Se indican la asignación de las
terminales de entrada y salida del dispositivo.
Ecuaciones lógicas. Define la relación entre las terminales
asignadas. JJVS-09
15
Implementación en WinCUPL Y =
∑ 0,1,2,3,6
Encabezado
signación de terminales
Name Name ; PartNo 00 ; Date 03/10/2006 ; Revision 01 ; Designer Engineer ; Company UTM ; Assembly None ; Location ; Device g22v10 ; /* *************** INPUT PINS *********************/ PIN 1 = A ; /* */ PIN 2 = B ; /* */ PIN 3 = C ; /* */ /* *************** OUTPUT PINS *********************/ PIN 23 = Y ; /* */ /* ************** ECUACIÓN LÓGICA ******************/ Y=(!A&!B&!C)#(!A&!B&C)#(!A&B&!C)#(!A&B&C)#(A&B&!C);
Ecuaciones lógicas JJVS-09
16
Elementos del lenguaje CUPL
Variables Son cadenas de caracteres alfanuméricos que especifican terminales del dispositivo, nodos intermedios, constantes, señales de entrada y salida, señales intermedias o conjuntos de estas. Son sensibles a las mayúsculas.
Indexadas Es posible usar nombres de variables para representar un grupo de variables terminando estas con un numero indexado del 0 al 31. Ejemplo: D0 D1 D2 D3 D4 D5 D6 D7
JJVS-09
17
Palabras reservadas
JJVS-09
18
Constantes numéricas La base por omisión en CUPL para todos los números es el hexadecimal. Excepto para los números de las terminales y variables indexadas, las cuales siempre están en decimal. Ejemplos
Decimal Hexadecimal Octal Binario
JJVS-09
‘d’O ‘h’O ‘o’O ‘b’O
‘d’21 ‘h’15 ‘o’25 ‘b10101
‘d’51 ‘h’33 ‘o’63 ‘b’110011
‘d’7 ‘h’7 ‘o’7 ‘b’111 19
Funciones lógicas & * : ; @
Not ! And & Or # Xor $ /*JJVS-09 Comentario */
# + . ,
( [ ¨ ! $
) ] /* ‘ ^
/ */ =
20
Operadores aritméticos
JJVS-09
21
Notación de lista
Una lista es un método corto para definir variables. Ejemplo: [D0,D1,D2,D3,D4,D5,D6,D7] [ON, OFF] [ONE, TWO, THREE, FOUR]
Cuando todos los nombres de las variables en la lista son secuencialmente numerados, el siguiente formato puede ser usado: [D0..D7] [D0..7]
JJVS-09
[A00..A15] [A7..0]
[INPUT3..INPUT0] [I2..1]
22
Usando el comando FIELD
Una declaración con FIELD asigna una variable a un grupo de bits. JJVS-09
23
Extensiones de variables
JJVS-09
24
Operaciones de igualdad Estas expresiones
son equivalentes a :
JJVS-09
25
Tablas de verdad
JJVS-09
26
Máquinas de estados
JJVS-09
27
Máquinas de estados Sequenced count {
JJVS-09
present S0 if up next S1; if down next S9; if clear next S0; if down out carry; present S1 if up next S2; if down next S0; if clear next S0; present S2 if up next S3; if down next S1; if clear next S0; }
28
Condición
JJVS-09
29
Encabezado Name PartNo Date Revision Designer Company Assembly Location Device
Name ; 00 ; 03/10/2006 ; 01 ; Engineer ; UTM ; None ; Huajuapan; g22v10 ;
Deben escribirse todos los campos, si no, el compilador marca un error.
JJVS-09
30
Declaración de terminales El formato general para esta declaración es: PIN pin_number = [ ! ] var Ejemplos: PIN 1 = Clock; PIN 2 = S; PIN 11 = !O; PIN [3..6] = [D0..D3];
Declaración de nodos PIN_NODE
pin_number = [!]var;
Se usan para dispositivos que cuentan con terminales internas
JJVS-09
31
Comandos del procesador El comando $DEFINE sirve para remplazar un operador, número, o símbolo con una cadena de caracteres que es más consistente con una aplicación específica. $DEFINE ON ‘b’1 $DEFINE OFF ‘b’0 $DEFINE PORTA ‘h’C000 $DEFINE + # $DEFINE * & JJVS-09
32
Comandos del procesador $DEFINE $DEFINE $DEFINE $DEFINE
STATE-a STATE-b STATE-c STATE-d
Present
STATE-d NEXT STATE-a
JJVS-09
‘b’000 ‘b’001 ‘b’010 ‘b’100
33
Simulación
JJVS-09
34
Multiplexor de 2 a 1 D0 D1 C0
Y
Min
C0
D1
D0
Y
0
0
0
0
0
1
0
0
1
1
2
0
1
0
0
3
0
1
1
1
4
1
0
0
0
5
1
0
1
0
6
1
1
0
1
7
1
1
1
1
Y=/C0*D0 + C0*D1 Tarea 1: Realice un decodificadro 2 a 4, empleando WinCupl
JJVS-09
35
Generador de paridad
Diseñe un circuito que determine la paridad par en una palabra de entrada de 8 bits. Existe paridad si se tiene un número par de unos a la entrada.
Escriba el programa para el WinCUPL.
JJVS-09
36
Name bcd7seg ; PartNo 00 ; Date 04/10/2006 ; Revision 01 ; Designer Engineer ; Company UTM ;
Assembly None ; Location ; Device g22v10 ; /* *************** INPUT PINS */ PIN 1 = B0 ; PIN 2 = B1 ; PIN 3 = B2 ; PIN 4 = B3 ; */ /* *************** OUTPUT PINS*/ PIN 14 = A ; PIN 15 = B ; PIN 16 = C ; PIN 17 = D ; PIN 18 = E ; PIN 19 = F ; PIN 20 = G ; JJVS-09
FIELD ENTRADA = [B3..0]; FIELD SALIDA = [A,B,C,D,E,F,G]; TABLE ENTRADA=>SALIDA { 0=>'b'1111110; 1=>'b'0110000; 2=>'b'1101101; 3=>'b'1111001; 4=>'b'0110011; 5=>'b'1011011; 6=>'b'1011111; 7=>'b'1110000; 8=>'b'1111111; 9=>'b'1110011; }
38
Decodificador de 3 a 8 Entradas
Salidas
A B
C
Y0
Y1 Y2 Y3 Y4 Y5 Y6 Y7
0
0
0
1
0
0
0
0
0
0
0
0
0
1
0
1
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
0
0
1
1
0
0
0
1
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
1
0
1
0
0
0
0
0
1
0
0
1
1
0
0
0
0
0
0
0
1
0
1
1
1
0
0
0
0
0
0
0
1
Y = /A/B/C+/A/B C+/AB/C+/ABC+A/B/C+A/BC+AB/C+ABC 39
JJVS-09
Decodificador de 3 a 8 activo en bajo Entradas
Salidas
A
B
C
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
0
0
0
0
1
1
1
1
1
1
1
0
0
1
1
0
1
1
1
1
1
1
0
1
0
1
1
0
1
1
1
1
1
0
1
1
1
1
1
0
1
1
1
1
1
0
0
1
1
1
1
0
1
1
1
1
0
1
1
1
1
1
1
0
1
1
1
1
0
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
0
JJVS-09
40
Comparador de dos datos de 3 bits
Dato a
Mayor Igual
Dato b
Menor
Compara
TAREA2: Realice un comparador de 4 bits. JJVS-09
41
Sumador
JJVS-09
Cin
A
B
suma
Cout
0
0
0
0
0
0
0
1
1
0
0
1
0
1
0
0
1
1
0
1
1
0
0
1
0
1
0
1
0
1
1
1
0
0
1
1
1
1
1
1
42
Clasificación de la lógica digital Logic ASIC Aplicattion Specific ICs
Standard Logic Programmable Logic Gate Arrays Devices (PLDs) SPLDs (PALs) 80s
JJVS-09
CPLDs 90 -
Cell-Based ICs
Full Custom ICs
FPGAs 90 43
Simple Programmable Logic Device SPLD PAL PLA PLD
Arreglos AND-OR con salidas directas o a registros (flip-flops). Contienen de 10 a 100 circuitos TTL en un solo chip
JJVS-09
44
Complex Programmable Logic Device Contiene varios elementos reconfigurables tipo PLA interconectados por una matriz de conmutación. Equivale de 4 a 64 PLAs. Circuitos de 1000 a 10000 compuertas en un solo chip. Tiempos de retardo de terminal a terminal fijos del orden de nanosegundos.
JJVS-09
45
PAL12L10
Tiene 12 entradas (Terminales 1-11 y 13). Tiene 10 salidas combinacionales (14 - 23). Se puede generar hasta 20 minitérminos,2 en cada salida de hasta 12 productos .
JJVS-09
46
PAL 20C1 Tiene 20 entradas. Tiene 1 salida complementada. Se puede generar hasta 16 minitérminos de 20 entradas cada uno.
JJVS-09
47
PAL16R4
Tiene 16 entradas de las cuales 8 pueden retroalimentarse de las salidas. Tiene 8 salidas y cuatro de estas pueden ser con salida a flip-flop tipo D. Se puede generar hasta 8 minitérminos de hasta 8 variables (salida combinacional) y 7 para combinacional. Permite Reset síncrono y asíncrono, y se puede hacer retroalimentación de las salidas a las entradas.
JJVS-09
48
GAL16V8
Tiene 10 entradas.
Tiene 8 salidas (que pueden ser entradas).
En modo de registro la terminal 1 y 11, son configuradas como la señal de reloj y la habilitación de salida (OE). En modo complejo se retroalimentan las terminales 12 y 19. En modo simple se retroalimentan las terminales adjacentes y las salidas quedan en las terminales 15 y 16. Se puede generar hasta 80 minitérminos: 8 en cada una de las salidas.
Permite Reset síncrono y asíncrono, y se puede hacer retroalimentación de las salidas a las entradas. JJVS-09
49
GAL16V8
JJVS-09
50
Presentaciones
JJVS-09
51
Modos para sustituir dispositivos con la GAL16V8
JJVS-09
52
PLS 153
JJVS-09
53
PLS 153
8 entradas lógicas, I0 a I7. El dispositivo tiene 10 salidas, B0 a B9. Cada salida es programable usando una compuerta XOR. Todas las salidas son retroalimentadas al arreglo de compuertas, proporcionando un total de 18 entradas al arreglo. Si las salidas no son habilitadas, se pueden usar como entradas. Cada una de las 10 salidas es combinacional y puede generar expresiones de hasta 32 minitérminos usando algunas o las 8 entradas o 10 salidas como operandos.
JJVS-09
54
PLS 167
JJVS-09
55
PROGRAMA EN OPAL DEL COMPARADOR DE 4 BITS begin header Comparador de dos numeros de cuatro bits end header begin definition device p22v10; input compara=1,a3=2,a2=3,a1=4,a0=5,b3=6,b2=7,b1=8,b0=9; feedback(com) may=23,igu=22,men=21; output(com)mayor=20,menor=19,igual=18; set datoa=[a2,a1,a0],datob=[b2,b1,b0]; end definition begin equation may = ( datoa > datob )*compara; igu = ( datoa == datob)*compara; men = ( datoa < datob )*compara; mayor = may*(a3>=b3)*compara; menor = men*(a3<=b3)*compara; igual = igu*(a3==b3)*compara;
JJVS-09
56
Diagrama de estados /* *************** INPUT PINS *********************/ PIN 1 = CLOCK ; /* */ PIN 2 = R ; /* */ PIN 3 = S ; /* */ PIN 4 = T ; /* */ PIN 5 = RESET ; /* */ PIN 6 = PRESET ; /* */ /* *************** OUTPUT PINS *********************/ PIN 14 = A ; /* */ PIN 15 = B ; /* */ PIN 16 = C ; /* */ SEQUENCE [A,B,C] { PRESENT 6 IF R NEXT 2; DEFAULT NEXT 4; PRESENT 4 IF S NEXT 6; DEFAULT NEXT 5; PRESENT 2 IF S NEXT 3; DEFAULT NEXT 6; PRESENT 5 IF T NEXT 7; DEFAULT NEXT 4; PRESENT 7 NEXT 6; PRESENT 3 IF T NEXT 2; DEFAULT NEXT 7; } A.AR=RESET;B.AR=RESET;C.AR=RESET; A.SP=PRESET;B.SP=PRESET;C.SP=PRESET; JJVS-09
57
Múltiples entradas en un diagrama de estados
JJVS-09
58
Diseño lógico con salidas
JJVS-09
59
Ejemplo de salidas
JJVS-09
60
Diagrama de tiempo
JJVS-09
61
Generación de los pulsos de salida
JJVS-09
62
Otras salidas
JJVS-09
63
Diagrama de tiempos
JJVS-09
64
Salidas del ejercicio
JJVS-09
65
Diagrama de tiempos
JJVS-09
66
Un controlador para una máquina de refrescos Entrega dos tipos de refrescos: sangria y light. Acepta solo monedas de 5 peso. Si existen monedas depositadas, estas pueden regresarse en cualquier momento mediante un botón. El usuario puede tomar el tiempo que sea necesario para hacer su selección. El precio del refresco es de 10 pesos. Más de una entrada no puede ser reconocida al mismo tiempo.
JJVS-09
67
Circuitos integrados programables con diferentes densidades
SPLD (Simple Programmable Logic Device) PROM (Programmable Read Only Memory) PLA (Programmable Logic Array) PAL (Programmable AND-Array Logic)
CPLD (Complex Programmable Logic Device)
FPGA (Field Programmable Logic Device)
JJVS-09
68
Programación con memorias de solo lectura
JJVS-09
69
Máquina de estados basada en ROM
JJVS-09
70
Diseño de diagramas de estado con entradas de decisión
JJVS-09
71
Diseño de diagramas de estado con múltiples entradas
JJVS-09
72
THINGS TO THINK...
He who asks is a fool for five minutes, but he who does not ask remains a fool forever. –Chinese proverb.
Advice is what we ask for when we already know the answer but wish we didn't. -- Erica Jong
JJVS-09
73
Generador/Sintetizador de señales digitales
JJVS-09
74
Generador/Sintetizador de señales digitales
JJVS-09
75
Dispositivos Lógicos Programables Complejos (CPLD)
Un CPLD es un dispositivo lógico programable complejo (Complex Programmable Logic Device)
Son circuitos programables construidos con base en arreglos de bloques lógicos (LABs)
Cada LAB contiene un conjunto de Macro celdas
Con cada macro celda se puede realizar una función lógica independiente
Los LABs se conectan entre si a través de un arreglo de interconexiones programable
Es posible realizar sistemas con mayor complejidad
JJVS-09
76
Dispositivos Lógicos Programables Complejos (CPLD)
Multiple PLDs can be combined on a single chip by using programmable interconnect structures.
These PLDs are called CPLDs.
JJVS-09
ALTERA MAX 700
77
CPLDs de Altera
MAX 5000, MAX 7000, y MAX 9000
• El dispositivo puede ser considerado como un arreglo de SPLDs. • Existen en tecnología EPROM y EPROM. • Se programan “en el circuito”.
JJVS-09
78
CPLD MAX 7000
Cada LAB consiste de dos macroceldas (OLMC), que comprende un conjunto de términos de productos programables que alimentan una compuerta OR y un flip-flop (D,JK,T o SR).
JJVS-09
79
CPLD MAX 7000
Las entradas a la OLMC son variables, la compuerta OR puede recibir 5 SOP y 15 extras de otras macroceldas, la salida OR puede variarse.
JJVS-09
80
CPLDs de AMD (Advance Micro Devices)
Existen diversas categorías Match 1-5. La M-1 utiliza PALs 22v16. La M-4 utiliza de 6 a 16 PALs (2K-5K comp).
JJVS-09
81
Match 4 de AMD
Existen 2 diferencias con un PAL: existe un seleccionador de salidas y una matriz de conmutación entre las OR y los pines de E/S. Las salidas OR son flexibles a diferencia de los PAL.
JJVS-09
82
CPLDs de Lattice
Su primera generación de CPLDs, son las Plsi e ispLSI 1000 (rango de 1200 a 4000 compuertas), retardo de 10ns. Serie 2000, rango de 600-2000 compuertas, la cual tiene más macroceldas por terminales de entrada/salida y menor velocidad de retardo que la serie 1000 (5.5ns). El estado del arte de en cuanto a velocidad. La serie 3000 representa los CPLDs más grandes con hasta 5000 compuertas y retardos de 10-15ns. Se compara a la Mach 4 de AMD. Ofrece otras características mejoradas, como el JTAG boundary scan.
JJVS-09
83
Estructura general del CPLD PSI o ispLSI de Lattice
JJVS-09
84
Cypress FLASH370 CPLDs Se basa en tecnología FLASH y EEPROM, ofrece retardos de terminal a terminal de 8.5 a 15 ns. No se programan “en el circuito”. Proporcionan más entradas/salidas que sus competidores. Las partes pequeñas tienen 32 macroceldas (grandes:256) y 32 entradas/salidas (grandes:256).
JJVS-09
85
Arquitectura del CPLD de Cypress FLASH370
JJVS-09
86
Xilinx XC7000 CPLD
Tiene dos familias: XC7000 y XC9500. Series 7200 y 7300.
Cuentan con capacidad de 600 a 1500 compuertas. Retardos de 25 ns. Cada CI consiste de una colección de bloques compuesto de 9 macroceldas. La serie 7200 incluye dos compuertas OR y cada una de ellas es entrada a una ALU de dos bits. La ALU genera cualquier función que se conecta a un flip-flop reconfigurable. La serie 7300 es una versión mejorada de la 7200, ofreciendo mayor capacidad (3000 compuertas) y alta velocidad.
XC9500
Hasta 6200 compuertas y retardos de 5 ns.
JJVS-09
87
Altera CPLD FLASHlogic
JJVS-09
88
Arreglos ICT PEEL
JJVS-09
89