Title: GESTION DE LA JERARQUIA
1GESTION DE LA JERARQUIA
2Modelo de un proceso
- El modelo de simulación en VHDL consiste de
múltiples procesos que se encuentran ejecutándose
secuencialmente.
3Concurrentes vs. Secuencial
- Este modelo puede tener cualquier numero de
procesos. - El proceso es visto como una sola sentencia
concurrente. - Se puede tener n número de sentencias
concurrentes y por lo tanto cualquier número de
procesos.
- architecture A of E is
- begin
- -- concurrent statements
-
- P1 process
- begin
- -- sequential statements
- end process P1
- -- concurrent statements
- P2 process
- begin
- -- sequential statements
- end process P2
- -- concurrent statments
- end A
4Asignación de señales en un proceso
5Procesos concurrentes múltiples drivers.
- Tenemos dos asignaciones a la señal Z, realizadas
fuera de un proceso. Las sentencias fuera de un
proceso son concurrentes y por lo tanto Z tiene
dos drivers
- Architecture CONCURRENT of MULTIPLE is
- signal A, B, C ,D std_ulogic
- signal Z std_logic
- Begin
- Z lt A and B
- Z lt C and D
- End CONCURRENT
-
A B
?
?
Z
C D
6Dentro de un proceso un solo driver.
- architecture SEQUENTIAL of MULTIPLE is
- signal Z, A, B, C, D std_ulogic
- begin
- process(A, B, C, D)
- begin
- Z lt A and B
- Z lt C and D
- end process
- end SEQUENTIAL
- Dentro de este ejemplo similar, las dos
asignaciones a Z se encuentran dentro de un
proceso. (Un proceso puede definir únicamente un
driver en una señal)
C D
Z
7Última asignación
- architecture SEQUENTIAL of MULTIPLE is
- signal Z, A, B, D std_ulogic
- begin
- process (A, B, C, D)
- begin
- Z lt A and B
- Z lt C and D
- end process
- end SEQUENTIAL
- El lenguaje define que en un proceso, la última
asignación hecha a una señal tiene efecto, pero
únicamente cuando el proceso se suspende (final
del proceso)
Tiene efecto
cuando se suspende
8Diferente significado
- Estas mismas dos sentencias tienen significado
muy distinto, dependiendo si se ejecutan dentro o
fuera de un proceso.
process (A, B, C, D) begin Z lt A and B Z lt C
and D end process
Architecture X of MULTIPLE is begin Z lt A and
B Z lt C and D end X
9Llamadas a múltiples procesos?
- Un proceso puede ser potencialmente ejecutado
varias veces antes de que todas las señales sean
actualizadas.
10Ejemplo
Proceso llamado
- SEÑALES ASIGNADAS DESPUES DE UNA LECTURA.
- Tenemos un proceso con asignación a la señal M, y
el valor de M es también leído en el proceso - B cambia de 0 a 1.
Evento en B
- EJEMPLO process (A, B, M)
- begin
- Y lt A
- M lt B
- Z lt M
- end process EJEMPLO
A 0 B1 M0 Z0
11Actualización de valores
La asignación no es inmediata!
Ejemplo process(A,B,M) begin Y lt A M ltB Z
ltM end process Ejemplo
En este punto Z sigue teniendo valor 0!
12Actualización de valores
Z no ha sido actualizada!
T1process Tiempo que tarda en ejecutarse el
bloque process
T1process
El proceso termina la primera ejecución
13Debido a que M ha cambiado de 0 a 1 (por la
asignación MltB), el proceso vuelve a ejecutarse
Al ejecutarse esta línea Z no es afectada!
Segunda ejecución del proceso
Ejemplo process(A,B,M) Begin Y lt A M ltB Z
ltM end process Ejemplo
T1process
14Actualización de valores
T1 process
T2 process
Termina la segunda ejecución del proceso
15ENTRADA Y SALIDA
16Definición de entrada/salida
- Se necesitan dos pasos para definir las
entradas/salidas. - A) El tipo buffer (entrada, salida, tres estados
,etc.) - B) La asignación de pins (pin particular del
circuito)
17Definición del tipo en el código
- Inferir o instanciar la entrada y salida.
- La herramienta de síntesis Xilinx es capaz de
inferir automáticamente los tipos de
entrada/salida.
18Jerarquía separada para entrada/salida
- Existen herramientas que no infieren en la
entrada/salida básica. - Para poder instanciarlos consultar el manual de
uso del fabricante.
Nivel Superior
Instanciación de los componentes de la lógica
del núcleo
Buffer E/S
19Definición del tipo en la herramienta de síntesis
- Se puede realizar de forma separada la definición
de entrada/salida. - Se selecciona los tipos de buffer y se asignan a
los puertos de la lógica del núcleo.
20Asignación de los pins de entrada/salida
- Asignación de pins en las Herramientas de
Foundation. - User Control File (.UCF)
- Con las herramientas de Xilinx, la asignación de
los pins es a través del archivo (.UCF).
21Tres estados y entrada/salida bidireccional
- Dentro de la familia Xilinx es capaz de soportar
entrada/salida bidireccional, de tres estados o
con registros, etc.
22Salida de 3 estados
- Las herramientas de síntesis tienen la habilidad
de inferir automáticamente celdas de
entrada/salida tanto salidas de 3 estados como
bidireccionales.
Código VHDL
Síntesis
EN
EN
OUT
Z
IN
OUT
Z
23Estilo de código para inferir 3 estados.
- El uso de la asignación de Z es la que permite a
la herramienta de síntesis inferir en el buffer
de tres estados.
if (EN 0) then OUT_PAD lt
BUS_OUT else OUT_PAD lt Z end if
Síntesis
EN
BUS _OUT
OUT_PAD
24Código para inferir entradas y salidas
bidireccionales
CORE_IN lt BIDI process (CORE_OUT, BIDI) if
(EN0) then BIDI lt CORE_OUT else
BIDI lt Z end if end process
Sentencia concurrente
Síntesis
Uso de la asignación al valor Z
EN
BIDI
CORE_OUT
CORE_IN
25Entrada/Salida con registro
- La implementación es automática utilizando un
registro en la celda de entrada/salida apropiada
si esta disponible. - Debe soportar el uso implícito de enable y reset
síncronos en la celda.
D
Q
Terminal de Salida
CLK
26Inserción de registros durante MAP
- Además las herramientas de implementación de
Xilinx tiene un interruptor que les permite
poner registros en las celdas de entrada/salida
donde sea apropiado.
27Pull-up
- Xilinx en su mayoría de dispositivos permite el
uso de pull-up/down, en las terminales de
entrada/salida.
28Requerimentos de ruteo especiales
- En ocasiones, se requiere que las señales de
reset y del reloj, tengan mejor velocidad y
desempeño. - Sucede cuando alguna señal se distribuye en una
red de elementos (alto fanout). - Si la herramienta de síntesis no infiere esta
red, se debe especificar con STARTUP, una red
llamada GSR (Global set/reset)
29Redes para reloj
- Al sintetizar Xilinx, instancia buffers globales
automaticamente en redes de reloj. - Si esto no sucede, entonces debe instanciarse una
celda de buffer global para manejar la red del
reloj - Los Buffers Genéricos son
XC3000 BUFG XC5200 BUFG XC4000E
BUFGP,BUFGS
30BUFG
- Puede ser aplicado sobre un IBUF (buffer de
entrada), o sobre redes internas que manejan
señales de CLK. - El efecto que tiene es conectar una señal, por la
ruta mas corta, a la red sobre la que se aplica
el BUFG - Ejemplos
- BUFG CLK mapea hacia una línea global de
reloj (GCK) - BUFG OE mapea hacia una línea global de
control 3-estado. - BUFG SR mapea a una linea global de control
set/reset
31Sintaxis BUFG
- attribute BUFG string
- attribute BUFG of signal_name signal is
CLKOESRDATA_GATE
32Señales internas de 3 estados
- El uso de buffers internos ayuda en ocasiones a
simplificar el diseño - Estos buffers pueden ser implementados de tres
maneras - - tres estados
- - and cableada
- - or-and cableada
- Para el uso de un mux 5-1, el uso de estos
elementos simplifica el diseño
33Mux 5-1 con Buffers internos
Xilinx infiere cuando instanciar automáticamente
buffer, (BUFT)
34Decodificadores amplios(Wide Edge Decoder)
- En ocasiones es de mucha utilidad contar con un
decodificador de direcciones, por ello Xilinx
tiene circuiteria dedicada sobre el contorno del
dispositivo, por lo que las señales de entrada
pueden ser decodificadas. Estos decoficadores son
implementados con celdas and y pull-up. - Existe el tipo WAND, que permite instanciar este
tipo de decodificadores.
35TIEMPO
- VHDL nos permite modelar el tiempo, que es una
parte importante al describir sistemas
electrónicos.
36ESTRUCTURA
- Composición de elementos.
37ENTIDAD
- La entidad en VHDL describe la interfase de un
bloque jerárquico, sin describir su
comportamiento. - La entidad es equivalente a un símbolo en un
diseño basado en una estructura esquemática. - Es la porción de código que permite definir en
particular Entradas y Salidas
38ENTIDAD Informaciones Complementarias
- Equivalente a símbolos en los esquemas.
- Los ports de entrada/salida deben
imperativamente estar declarados dentro de la
entidad y definir su modo - in, out, inout, buffer.
- Modo por defectoin
- - Los ports pueden igualmente ser declarados en
forma de señales simples (ej. Bit) o en forma
de bus (ej bit_Vector).
39EJEMPLO DE ENTIDAD
- Ejemplo
- entity Ejemplo is
- port(
- A,Bin bit_vector(7 downto 0)
- SELin bit
- Mux_ORout bit )
- end Ejemplo
-
Equivalencia Esquemática
40ENTIDAD Sintaxis de declaración
- entity EJEMPLO is
- port(Lista puertos de entrada/Salida
comprimiendo - Nombre_de_señalmodo y tipo.)
- end EJEMPLO
- --Los corchetes indican que es opcional usar
de - --nuevo el nombre de la entidad después de la
palabra - -- clave end.
- El nombre dado a la entidad puede ser cualquiera.
(excepto las palabras reservadas). - Dar de preferencia el mismo nombre a la entidad y
al fichero VHDL (En este caso EJEMPLO.vhd) - La lista de puertos está comprendida entre dos
paréntesis y seguida de un punto y coma. - Nombre de la entidad opcional después de la
palabra end.
41ARQUITECTURA
- Porción de descripción del comportamiento del
dispositivo a sintetizar. - La arquitectura describe el comportamiento de la
entidad. - Esta asociada a una entidad
- (dentro del mismo fichero)
- Posee una parte declaratoria y una parte
operatoria.
42Entidad y Arquitectura
- Una entidad puede tener mas de una arquitectura.
- Una aplicacion es útil, esto es cuando un diseño
es descrito a varios niveles de abstracción
pueden existir descripciones a nivel de
comportamiento, RTL y de compuertas, del mismo
diseño, o varias formas de describir el mismo
circuito.
43PAQUETE
- Un paquete tiene una colección de definiciones
que pueden ser referenciados por varios diseños
al mismo tiempo.
44ARREGLOS
- Son elementos del mismo tipo.
- VHDL define dos tipo de arreglo estándar
bit_vector y string. - Un arreglo en VHDL tiene las siguientes tres
características - 1.-El tipo de elementos en el arreglo (tienen
que ser del mismo tipo) - 2.-La longitud de el arreglo
- 3.-Los índices del arreglo
- bit_vector representa un tipo especial de
arreglo en el cual el numero de bits o la
longitud del arreglo no es restringida y es
puesta en la declaración del objeto
45bit string literal.
- Es una notación para especificar el valor de un
bit_vector.
46Asignación por posición.
- Dos objetos de tipo arreglo pueden ser asignados
uno al otro, mientras sean del mismo tamaño y del
mismo tipo - Notar que la asignación es por posición y no por
número de índice. El concepto de bit más
significativo no esta definido en VHDL.
signal Z_BUS bit_vector(3 downto
0) signal C_BUS bit_vector(1 to 4)
47Parte de un arreglo. (Slices)
- Una parte de un arreglo unidimensional, en
general, y un bit_vector en particular puede ser
referenciado, inclusive por un solo elemento. La
dirección de esta parte (es decir, to o downto)
debe corresponder con la dirección del arreglo
declarado.
signal Z_BUS bit_vector(3 downto
0) signal C_BUS bit_vector(1 to 4)
48Concatenación y agregados.
- Ahora se discuten dos conceptos conocidos como
concatenación y agregado. Estos son dos métodos
que sirven para asociar señales entre ellos y
asignarlas a un arreglo de objetos.
49Concatenación
- VHDL tiene la habilidad de asociar bits
individuales y vectores para formar una
estructura de arreglo. Esto es conocido como
concatenación y utiliza el operador ampersand
(). Los ejemplos muestran que bits individuales
y vectores de bits pueden ser concatenados para
formar nuevos vectores
50Agregados.
- Otro método de asignación a elementos de un
arreglo es conocido como agregado. - Un agregado esta contenido entre paréntesis y
las asignaciones a cada elemento son separadas
por comas.
Z_BUSlt(A, B, C, D)
51Especificando los elementos por nombre.
- Es posible asignar a los elementos de un arreglo
por nombre o por posición. - Este ejemplo demuestra que también un rango del
arreglo puede ser asignado, siempre y cuando el
mismo valor sea asignado a cada elemento del
rango.
Xlt (3gt1, 1 downto 0 gt1, 2gtB)
52Others, soporte para síntesis.
- Los agregados tienen la habilidad de usar la
sentencia others, la cual asignará un valor a
todos los otros elementos de un arreglo que no
han sido especificados. Finalmente, no todas las
herramientas de síntesis soportan el uso de
agregados, por lo que puede ser necesario usar
concatenación para realizar manipulaciones sobre
arreglos.
Xlt (3gt1, 1 gt0, othersgtB)