gal 22v10 herramientas software - san valeroprofesores.sanvalero.net/~arnadillo/documentos/... ·...
TRANSCRIPT
09/04/2013
1
GAL22V10
GAL 22V10
Herramientas software
Departamento de ElectrónicaFundación San Valero
Dispositivo GAL 22V10
•DESCRIPCIÓN FUNCIONAL DEL DISPOSITIVO
09/04/2013
2
Dispositivo GAL 22V10
•DESCRIPCIÓN FUNCIONAL DEL MÓDULO DE TRABAJO
Fases del diseño
09/04/2013
3
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.
09/04/2013
4
Iniciar un proyecto
•INICIAR UN PROYECTO
Seleccionar dispositivo haciendo doble click en el icono del dispositivoSeguidamente 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”
09/04/2013
5
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 DesignCrear mapa de fusibles: “Create Fuse Map”
09/04/2013
6
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.
09/04/2013
7
Lenguaje HDL
Lenguaje HDL(Hardware Description Languages)
Departamento de ElectrónicaFundación San Valero
Lenguaje HDL
HDL es un lenguaje de descripción de sistemas digitales. Es de tipo noestructurado y permite la descripción de cualquier lógico tantocombinacional 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 delprograma se indica tras el comando Module. Tenemos la opción deañadir un título tras la sentencia Title.Declaraciones: En este apartado se realiza una relación entre losnombres de las señales que se van a emplear durante el programa y lospines de E/S del chip a los que corresponden. Es importante conocercuáles son los números de pines del dispositivo con el que trabajamospara no cometer errores. En este apartado también podemos realizardeclaraciones de constantes, sin más que poner el nombre de la mismaseguido del signo igual (=) y el valor que deseamos posea a lo largo delprograma.
09/04/2013
8
Lenguaje HDL
Descripción lógica: Este es el cuerpo principal del programa Abel. Esdonde se realiza la descripción lógica del proyecto a resolver. Cuandose compila, se obtiene un fichero interpretado por el grabador y quedefine las conexiones internas que hay que realizar sobre el dispositivoGAL. Fundamentalmente podemos encontrar tres tipos de estructurasdentro de la descripción lógica: tablas de la verdad, ecuaciones lógicasy diagramas de estado para aplicaciones secuenciales.
Vectores de test: Este apartado es opcional y en el se pueden indicaruna serie de vectores que serán aplicados para comprobar el correctofuncionamiento de la aplicación. Dicha comprobación se puede simular anivel de software y permite comprobar el chip una vez grabado. En losvectores de test se indica tanto el valor que pueden tener las entradascomo el valor que deben adquirir las salidas en función de esasentradas.
Final del programa: Se indica el comando “End” seguido del nombre delfichero. Cuando el compilador encuentra dicho comando, se finaliza elproceso de compilación.
Lenguaje HDL
09/04/2013
9
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 unespacio. Excepciones a esta regla son las listas de identificadores separados por comas,expresiones donde los identificadores o números son separados por operadores o dondela separación la proporciona los paréntesis.
Ni espacios, ni puntos pueden ser incluidos en una palabra clave, número, operador oidentificador. 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 essensible 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
09/04/2013
10
Ecuaciones Lógicas
Para la realización de ecuaciones lógicas en Abel, disponemos de cuatro tipos deoperadores: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 SumaNo 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 quese especifican los valores que deben tomar las salidas para cada combinación de lasseñales de entrada.Las tablas de la verdad pueden emplearse para la resolución de ejercicioscombinacionales, cuando se realiza la asignación “->” entre las señales de entrada yde salida. En este caso es necesario que las señales de salida sean definidas comocombinacionales mediante la declaración: istype ´com´También es posible para secuenciales mediante: istype ´reg´
09/04/2013
11
Bloques de ecuaciones
El bloque de ecuaciones permite especificar funciones más complejas yobtener ecuaciones más fáciles de interpretar. Un bloque se define cerrándoloentre llaves ({}).
CASE: La sentencia CASE se emplea bajo la sección State_diagram paraindicar la transición de un estado de la máquina cuando hay múltiplescondiciones que afectan la transición de estados. Se pueden encadenarsentencias CASE con IF-THEN-ELSE, GOTO y otras sentencias CASE, y sepueden además usar bloques de ecuaciones.
IF-THEN-ELSE: Es una forma fácil de describir la progresión de un estado aotro en una máquina de estados. La expresión que sigue a la palabra clave IF esevaluada y, si el resultado es verdadero, la máquina va al estado indicado porstate_exp que sigue a la palabra clave THEN. Si el resultado de la expresiónes 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, permiteescribir en términos de transiciones
GRAFICOS DEC ESTADO: Es posible definir en Abel el comportamiento de unsistema secuencia sincrono, que comienza con la palabra claveSTATE_DIAGRAM. En estas estructuras secuenciales pueden usarsesentencias de alto nivel como IF..THEN y CASE, la sintaxis es la siguiente:STATE_DIAGRAM lista_de_variables_de_estado o bienSTATE_DIAGRAM vewctor_de_estado
09/04/2013
12
Ejemplos de programación
GN
D1
GN
D2
VC
C3
VC
C4
I0-C
LK
(2)
5
I1(3
)6
I2(4
)7
I3(5
)8
I4(6
)9
I5(7
)10
I6(9
)11
I7(1
0)12
I8(1
1)13
I9(1
2)14
I10(
13)
15
I11(
16)
16
I/O
/Q0(
17)
17
I/O
/Q1(
18)
18
I/O
/Q2(
19)
19
I/O
/Q3(
20)
20
I/O
/Q4(
21)
21
I/O
/Q5(
23)
22
I/O
/Q6(
24)
23
I/O
/Q7(
25)
24
I/O
/Q8(
26)
25
I/O
/Q9(
27)
26
PLD
VCC
S?
SW SPSTS?
SW SPSTS?
SW SPSTS?
SW SPST
S?
SW SPSTS?
SW SPSTS?
SW SPSTS?
SW SPST
D?LED
D?LED
D?LED
D?LED
VCC
Ejemplos de programación
GN
D1
GN
D2
VC
C3
VC
C4
I0-C
LK
(2)
5
I1(3
)6
I2(4
)7
I3(5
)8
I4(6
)9
I5(7
)10
I6(9
)11
I7(1
0)12
I8(1
1)13
I9(1
2)14
I10(
13)
15
I11(
16)
16
I/O
/Q0(
17)
17
I/O
/Q1(
18)
18
I/O
/Q2(
19)
19
I/O
/Q3(
20)
20
I/O
/Q4(
21)
21
I/O
/Q5(
23)
22
I/O
/Q6(
24)
23
I/O
/Q7(
25)
24
I/O
/Q8(
26)
25
I/O
/Q9(
27)
26
PLD
VCC
a
bf
c
g
de
DPY1234567
a
b
c
d
e
fg
8 dp
dp
DS?
DPY_7-SEG_DP
S?
SW SPSTS?
SW SPSTS?
SW SPSTS?
SW SPST
VCC
VCC
R1220
09/04/2013
13
Ejemplos de programación
EXPENDEDORA DE CAFÉ: Vamos a realizar el control del monedero de una máquina decafé. Cada café vale 100 pesetas y también se admiten monedas de 25, 50 y 100. Laexpendedora posee incorporado un circuito que detecta las monedas y envia dos señaleseléctricas para indicarnos qué moneda se ha introducido.
Si las señales indican 00 no hay ninguna moneda introducida, si se indica 01, se haintroducido 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á lasalida del café.
Inicialmente tendremos 5 estados:Cuando no haya ninguna moneda introducidaEl final cuando alcancemos o superemos el precioLos 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 alestado Vacio en el siguiente ciclo de reloj.
Ejemplos de programación
GN
D1
GN
D2
VC
C3
VC
C4
I0-C
LK
(2)
5
I1(3
)6
I2(4
)7
I3(5
)8
I4(6
)9
I5(7
)10
I6(9
)11
I7(1
0)12
I8(1
1)13
I9(1
2)14
I10(
13)
15
I11(
16)
16
I/O
/Q0(
17)
17
I/O
/Q1(
18)
18
I/O
/Q2(
19)
19
I/O
/Q3(
20)
20
I/O
/Q4(
21)
21
I/O
/Q5(
23)
22
I/O
/Q6(
24)
23
I/O
/Q7(
25)
24
I/O
/Q8(
26)
25
I/O
/Q9(
27)
26
PLD
VCC
S?
RESETS?
AS?
B
VCC
RELOJ
D?
CAFE
D?Q2
D?Q1
D?Q0