You are on page 1of 13

09/04/2013

GAL22V10

GAL 22V10
Herramientas software

Departamento de Electrónica
Fundación San Valero

Dispositivo GAL 22V10

•DESCRIPCIÓN FUNCIONAL DEL DISPOSITIVO

1
09/04/2013

Dispositivo GAL 22V10

•DESCRIPCIÓN FUNCIONAL DEL MÓDULO DE TRABAJO

Fases del diseño

2
09/04/2013

Herramientas Software

•Para realizar la programación en ABEL es necesario utilizar el software:


ISPDesignExpert de Latticce para posteriormente programar el dispositivo
GAL22V10.

Herramientas Software

•Para la grabación del dispositivo es necesario utilizar la herramienta


software ISPVM System de Latticce para la programación de este
dispositivo.

3
09/04/2013

Iniciar un proyecto

•INICIAR UN PROYECTO

Seleccionar dispositivo haciendo doble click en el icono del dispositivo


Seguidamente seleccionar la fuente con la que vamos a trabajar (ABEL-HDL)

Iniciar un proyecto

•Tras definir el nombre del módulo, fichero y titulo podemos comenzar a


escribir el programa

•Una vez escrito el programa lo grabamos y pinchamos en “Ejemplo.abl”

4
09/04/2013

Iniciar un proyecto

Seguidamente debemos ejecutar:


Compilador Lógico: “Compile Logic”
Chequeo de sintaxis: “Check Sintax”
Obtener las ecuaciones reducidas: “Reduce Logic”

Iniciar un proyecto

Una vez hemos comprobado que el fichero es correcto se procede a


obtener el fichero “JEDEC” que se empleará posteriormente en la
grabación del dispositivo.
Para ello seleccionar en la parte izquierda “Source in Project” el dispositivo
GAL22V10C y ejecutar cada una de las opciones a la derecha:
Link Design, Fit Design
Crear mapa de fusibles: “Create Fuse Map”

5
09/04/2013

Simulación en proteus

Una vez generado el fichero .jed realizamos el diseño del circuito en


Proteus y cargamos el fichero para su ejecución.

Simulación en proteus

Si pulsamos “Play” podremos ver el funcionamiento real del circuito.

6
09/04/2013

Lenguaje HDL

Lenguaje HDL
(Hardware Description Languages)

Departamento de Electrónica
Fundación San Valero

Lenguaje HDL

HDL es un lenguaje de descripción de sistemas digitales. Es de tipo no


estructurado y permite la descripción de cualquier lógico tanto
combinacional como secuencial.
La descripción del circuito se puede realizar empleando tablas de verdad,
ecuaciones lógicas y, para los sistemas secuenciales diagramas de estado.

SINTAXIS DEL PROGRAMA HDL:

Cabecera: Inicia el comienzo del programa Abel. El nombre del


programa se indica tras el comando Module. Tenemos la opción de
añadir un título tras la sentencia Title.
Declaraciones: En este apartado se realiza una relación entre los
nombres de las señales que se van a emplear durante el programa y los
pines de E/S del chip a los que corresponden. Es importante conocer
cuáles son los números de pines del dispositivo con el que trabajamos
para no cometer errores. En este apartado también podemos realizar
declaraciones de constantes, sin más que poner el nombre de la misma
seguido del signo igual (=) y el valor que deseamos posea a lo largo del
programa.

7
09/04/2013

Lenguaje HDL

Descripción lógica: Este es el cuerpo principal del programa Abel. Es


donde se realiza la descripción lógica del proyecto a resolver. Cuando
se compila, se obtiene un fichero interpretado por el grabador y que
define las conexiones internas que hay que realizar sobre el dispositivo
GAL. Fundamentalmente podemos encontrar tres tipos de estructuras
dentro de la descripción lógica: tablas de la verdad, ecuaciones lógicas
y diagramas de estado para aplicaciones secuenciales.

Vectores de test: Este apartado es opcional y en el se pueden indicar


una serie de vectores que serán aplicados para comprobar el correcto
funcionamiento de la aplicación. Dicha comprobación se puede simular a
nivel de software y permite comprobar el chip una vez grabado. En los
vectores de test se indica tanto el valor que pueden tener las entradas
como el valor que deben adquirir las salidas en función de esas
entradas.

Final del programa: Se indica el comando “End” seguido del nombre del
fichero. Cuando el compilador encuentra dicho comando, se finaliza el
proceso de compilación.

Lenguaje HDL

8
09/04/2013

Normas de sintaxis en
HDL

Una línea puede tener hasta 150 caracteres

Cada linea termina mediante un retorno de carro

Las palabras clave, identificadores y números deben estar separados por al menos un
espacio. Excepciones a esta regla son las listas de identificadores separados por comas,
expresiones donde los identificadores o números son separados por operadores o donde
la separación la proporciona los paréntesis.

Ni espacios, ni puntos pueden ser incluidos en una palabra clave, número, operador o
identificador. Los espacios pueden aparecer en cadenas de caracteres, comentarios,
bloques y argumentos.

Las palabras clave se pueden escribir en mayúsculas, minúsculas o combinadas.

Los identificadores pueden ser escritas en mayúsculas, minúsculas o combinadas, pero es


sensible al tipo de letra: el identificador, salida, escrito completamente en minúsculas,
no es el mismo que el identificador Salida.

Caracteres y
constantes

Caracteres soportados:
a - z (lowercase alphabet)
A - Z (uppercase alphabet)
0 - 9 (digits)
<space>
<tab>
!@#$?+&*()-
_=+[]{};:'"
`\|,<>./^%

Cosntantes soportadas:

.C. Entrada registrada (transición 0-1-0)


.D. Reloj con el flanco de bajada
.F. Señal flotante de entrada o salida
.K. Entrada registrada (transición 1-0-1)
.P. Registro pre cargado
.U. Reloj c9on flanco de subida
.X. Condición indeterminada
.Z. Valor triestado

9
09/04/2013

Ecuaciones Lógicas

Para la realización de ecuaciones lógicas en Abel, disponemos de cuatro tipos de


operadores:
Operadores lógicos:
Operador Descripción
! NOT
& AND
# OR
$ XOR
!$ XNOR

Operadores aritméticos:
Operador Ejemplo Descripción
- -A Complemento a 2
- A-B Resta
+ A+B Suma
No Válidos para conjuntos:
* A*B Multiplicación
/ A/B División entera sin signo
% A%B Módulo, resto de división
<< A<<B Rotar A a izquierda B bits
>> A>>B Rotar B a izquierda B bits

Operadores y Tablas de
verdad

Operadores relacionales:
Operador Descripción
== igual
!= no es igual
< menor que
<= menor o igual que
> Mayor que
>= mayor o igual que

TABLAS DE VERDAD:

Las tablas de la verdad definen la lógica de los circuitos mediante una lista en la que
se especifican los valores que deben tomar las salidas para cada combinación de las
señales de entrada.
Las tablas de la verdad pueden emplearse para la resolución de ejercicios
combinacionales, cuando se realiza la asignación “->” entre las señales de entrada y
de salida. En este caso es necesario que las señales de salida sean definidas como
combinacionales mediante la declaración: istype ´com´
También es posible para secuenciales mediante: istype ´reg´

10
09/04/2013

Bloques de ecuaciones

El bloque de ecuaciones permite especificar funciones más complejas y


obtener ecuaciones más fáciles de interpretar. Un bloque se define cerrándolo
entre llaves ({}).

CASE: La sentencia CASE se emplea bajo la sección State_diagram para


indicar la transición de un estado de la máquina cuando hay múltiples
condiciones que afectan la transición de estados. Se pueden encadenar
sentencias CASE con IF-THEN-ELSE, GOTO y otras sentencias CASE, y se
pueden además usar bloques de ecuaciones.

IF-THEN-ELSE: Es una forma fácil de describir la progresión de un estado a


otro en una máquina de estados. La expresión que sigue a la palabra clave IF es
evaluada y, si el resultado es verdadero, la máquina va al estado indicado por
state_exp que sigue a la palabra clave THEN. Si el resultado de la expresión
es falso, la máquina avanza al estado indicado por la palabra clave ELSE.

Bloques de ecuaciones

Ejemplo IF-THEN-ELSE:

IF A==b THEN 2;”Si A es igual a B ir al estado 2”


IF X-Y THEN J ELSE K; “Si x-y no eso j, sino k

WHEN-THEN-ELSE: Esta sentencia se emplea en ecuaciones.

WITH: La sentencia With se emplea en la sección de diagramas de estados.


Cuando se usa conjuntamente con sentencias IF-THEN o CASE, permite
escribir en términos de transiciones

GRAFICOS DEC ESTADO: Es posible definir en Abel el comportamiento de un


sistema secuencia sincrono, que comienza con la palabra clave
STATE_DIAGRAM. En estas estructuras secuenciales pueden usarse
sentencias de alto nivel como IF..THEN y CASE, la sintaxis es la siguiente:
STATE_DIAGRAM lista_de_variables_de_estado o bien
STATE_DIAGRAM vewctor_de_estado

11
VCC
VCC

VCC

S?
S?
S?
S?
Ejemplos de
Ejemplos de

programación
programación

SW SPST
SW SPST
SW SPST
SW SPST
GND

PLD
VCC
2
GND

S?
S?
S?
S?
S?
S?
S?
S?
3
VCC
4 1
VCC

SW SPST
SW SPST
SW SPST
SW SPST
SW SPST
SW SPST
SW SPST
SW SPST
GND
PLD

2
5 GND
3
I0-CLK(2) VCC
6 4
I1(3) VCC
7
I2(4) 5
8 I0-CLK(2)
I3(5) 6
9 I1(3)
I4(6) 7
I2(4)
10 8
I5(7) I3(5)
11 9
I6(9) I4(6)
10
12 I5(7)
I7(10) 11
13 I6(9)
I8(11) 12
14 I7(10)
13
I9(12) I8(11)
15 14
I10(13) I9(12)
16 15
I10(13)
I11(16) 16
I11(16)
D?

17 17
I/O/Q0(17) I/O/Q0(17)
LED

18 18
I/O/Q1(18) I/O/Q1(18)
19 19
I/O/Q2(19) I/O/Q2(19)
20
20 I/O/Q3(20)
I/O/Q3(20) 21
21 I/O/Q4(21)
D?

I/O/Q4(21) 22
I/O/Q5(23)
LED

22 23
I/O/Q6(24)
I/O/Q5(23) 24
23 I/O/Q7(25)
I/O/Q6(24) 25
24 I/O/Q8(26)
I/O/Q7(25) 26
25 I/O/Q9(27)
D?

I/O/Q8(26)
LED

26
I/O/Q9(27)

VCC
D?

R1
220
LED

8
7
6
5
4
3
2
1

f
e
c
a

g
d
b

dp
DS?

e
f

d
g
a
DPY

dp
b

DPY_7-SEG_DP
09/04/2013

12
09/04/2013

Ejemplos de
programación

EXPENDEDORA DE CAFÉ: Vamos a realizar el control del monedero de una máquina de


café. Cada café vale 100 pesetas y también se admiten monedas de 25, 50 y 100. La
expendedora posee incorporado un circuito que detecta las monedas y envia dos señales
eléctricas para indicarnos qué moneda se ha introducido.

Si las señales indican 00 no hay ninguna moneda introducida, si se indica 01, se ha


introducido una moneda de 25, con 10 una de 50 y con 11 una de 100 pesetas.

Cuando se hayan insertado las monedas suficientes se activará una señal que indicará la
salida del café.

Inicialmente tendremos 5 estados:


Cuando no haya ninguna moneda introducida
El final cuando alcancemos o superemos el precio
Los otros tres estados posibles serán (Hay25, Hay 50 y Hay 75)
Después de llegar al estado fin y servir el café, se deberá ir automáticamente al
estado Vacio en el siguiente ciclo de reloj.

Ejemplos de
programación

PLD
I/O/Q0(17)
I/O/Q1(18)
I/O/Q2(19)
I/O/Q3(20)
I/O/Q4(21)
I/O/Q5(23)
I/O/Q6(24)
I/O/Q7(25)
I/O/Q8(26)
I/O/Q9(27)
I0-CLK(2)

I10(13)
I11(16)
I7(10)
I8(11)
I9(12)
GND
GND
VCC
VCC

I1(3)
I2(4)
I3(5)
I4(6)
I5(7)
I6(9)
1
2
3
4

5
6
7
8
9
10
11
12
13
14
15
16

17
18
19
20
21
22
23
24
25
26

VCC

VCC

RELOJ

S?

RESET D? D? D? D?
S? Q2 Q1 Q0
CAFE
A
S?

13

You might also like