Está en la página 1de 52

GESTION DE LA JERARQUIA

Modelo de un proceso

 El modelo de ____ ____


___ ___
____ ____
simulación en VHDL __
___
__
___
____ ____
consiste de múltiples
procesos que se Proceso Proceso
encuentran
ejecutándose
secuencialmente.
____
___
____
__
___
____

Proceso
Concurrentes vs. Secuencial

architecture A of E is
 Este modelo puede tener begin
cualquier numero de -- concurrent statements
procesos. P1: process
begin
-- sequential statements
 El proceso es visto como end process P1;
una sola sentencia -- concurrent statements
concurrente. P2: process
begin
-- sequential statements
 Se puede tener n número end process P2;
de sentencias -- concurrent statments
concurrentes y por lo end A;
tanto cualquier número
de procesos.
Asignación de señales en un proceso
Procesos concurrentes: múltiples drivers.

Architecture CONCURRENT of MULTIPLE is  Tenemos dos


signal A, B, C ,D : std_ulogic; asignaciones a la señal
signal Z : std_logic;
Begin
Z, realizadas fuera de un
Z <= A and B; proceso. Las sentencias
Z <= C and D; fuera de un proceso son
End CONCURRENT; concurrentes y por lo
A tanto Z tiene dos drivers
B
? Z
C
D
Dentro de un proceso: un solo driver.

architecture SEQUENTIAL of
MULTIPLE is
 Dentro de este ejemplo signal Z, A, B, C, D : std_ulogic;
similar, las dos begin
asignaciones a Z se process(A, B, C, D)
begin
encuentran dentro de Z <= A and B;
un proceso. (Un Z <= C and D;
proceso puede definir end process;
únicamente un driver en end SEQUENTIAL;
una señal)
C
Z
D
Última asignación

architecture SEQUENTIAL of MULTIPLE


 El lenguaje define que is
en un proceso, la última signal Z, A, B, D : std_ulogic;
asignación hecha a una begin}
process (A, B, C, D) Tiene efecto
señal tiene efecto, pero begin
únicamente cuando el Z <= A and B;
proceso se suspende Z <= C and D;
end process; cuando se suspende
(final del proceso)
end SEQUENTIAL;
Diferente significado

process (A, B, C, D)
 Estas mismas dos
begin sentencias tienen
Z <= A and B;
Z <= C and D;
significado muy distinto,
end process; dependiendo si se
ejecutan dentro o fuera
= de un proceso.

Architecture X of MULTIPLE is

begin
Z <= A and B;
Z <= C and D;
end X;
¿Llamadas a múltiples procesos?

 Un proceso puede ser potencialmente ejecutado varias


veces antes de que todas las señales sean actualizadas.
Ejemplo Proceso llamado

SEÑALES ASIGNADAS EJEMPLO: process (A, B, M) Evento en B


begin
DESPUES DE UNA A: 0
LECTURA. Y <= A; B:1
M:0
Tenemos un proceso con M <= B;
Z:0
Z <= M;
asignación a la señal M,
y el valor de M es end process EJEMPLO;
también leído en el
proceso
B cambia de 0 a 1.
Actualización de valores

La asignación no
es inmediata!
Ejemplo: process(A,B,M)
begin
Y <= A;
M <=B;
Z <=M; En este punto Z
sigue teniendo
end process Ejemplo; valor 0!
Actualización de valores

Z no ha sido actualizada!

A
B
T1process: Tiempo que
M tarda en ejecutarse el
Z bloque “process”

T1process

El proceso termina la primera ejecución


Debido a que M ha cambiado de 0 a 1 (por la asignación M<=B), el
proceso vuelve a ejecutarse

Al ejecutarse esta
Segunda ejecución del proceso línea Z no es
afectada!
Ejemplo: process(A,B,M)
Begin A
Y <= A; B
M <=B; M
Z <=M; Z
end process Ejemplo;

T1process
Actualización de valores

A
B
M
Z

T1 T2
process process

Termina la segunda ejecución del proceso


ENTRADA Y SALIDA
Definició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)


Definició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.
Jerarquía separada para entrada/salida
 Existen herramientas que
no infieren en la
Nivel Superior entrada/salida básica.
 Para poder instanciarlos
consultar el manual de
Instanciación de los
uso del fabricante.
componentes
de la lógica del núcleo

Buffer E/S
Definició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.
Asignación de los pins de entrada/salida

Asignación de pins en las  Con las herramientas de


Herramientas de Xilinx, la asignación de
Foundation. los pins es a través del
archivo (.UCF).

User Control File (.UCF)


Tres estados y entrada/salida bidireccional

 Dentro de la familia Xilinx es capaz de soportar


entrada/salida bidireccional, de tres estados o con
registros, etc.
Salida de 3 estados

Código VHDL  Las herramientas de


síntesis tienen la
Síntesis habilidad de inferir
automáticamente celdas
de entrada/salida tanto
EN salidas de 3 estados
EN como bidireccionales.
OUT ‘Z’
IN
OUT
‘Z’
Estilo de código para inferir 3 estados.

if (EN = ‘0’) then


OUT_PAD <= BUS_OUT;
 El uso de la asignación
else de Z es la que permite a
OUT_PAD <= ‘Z’; la herramienta de síntesis
end if;
inferir en el buffer de tres
estados.
Síntesis

EN

BUS _OUT OUT_PAD


Código para inferir entradas y salidas bidireccionales

CORE_IN <= BIDI;


process (CORE_OUT, BIDI)
if (EN=‘0’) then Sentencia
BIDI <= CORE_OUT; concurrente
else
BIDI <= ‘Z’;
end if;
end process;

Síntesis Uso de la asignación


al valor Z

EN
CORE_OUT BIDI

CORE_IN
Entrada/Salida con registro

 La implementación es
automática utilizando un
registro en la celda de
entrada/salida apropiada
D si esta disponible.
Q  Debe soportar el uso
Terminal de implícito de enable y
Salida reset síncronos en la
celda.

CLK
Inserció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.
Pull-up

 Xilinx en su mayoría de
dispositivos permite el uso de
pull-up/down, en las terminales
de entrada/salida.
Requerimentos 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)
Redes 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
BUFG

 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
Sintaxis BUFG

 attribute BUFG: string;


 attribute BUFG of signal_name: signal is
“{CLK|OE|SR|DATA_GATE}”;
Señ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
Mux 5-1 con Buffers internos
Xilinx infiere cuando instanciar
automáticamente buffer, (BUFT)
Decodificadores 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.
TIEMPO

 VHDL nos permite


modelar el tiempo, que es
una parte importante al
describir sistemas
electrónicos.
ESTRUCTURA

 Composición de
elementos.
ENTIDAD

 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
ENTIDAD:
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 defecto:in
- Los “ports” pueden igualmente ser declarados en forma
de “señales” simples (ej. Bit) o en forma de bus (ej:
bit_Vector).
EJEMPLO DE ENTIDAD

 Ejemplo:
entity Ejemplo is
port(
A,B:in bit_vector(7 downto 0);
SEL:in bit; Símbolo Ejemplo
Mux_OR:out bit );
end Ejemplo; A[7:0]
B[7:0] MUX_OR
Equivalencia
Sel
Esquemática
ENTIDAD: Sintaxis de declaración

entity EJEMPLO is
port(Lista puertos de entrada/Salida comprimiendo:
Nombre_de_señal:modo 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”.
ARQUITECTURA

 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.
Entidad 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.
PAQUETE

 Un paquete tiene una colección de definiciones que


pueden ser referenciados por varios diseños al mismo
tiempo.
ARREGLOS

 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

Declaraciones legales 1 2 3 4
signal Z_BUS: bit_vector (3 downto 0) Signal
signal C_BUS: bit_vector (1 to 4) C_BUS

Declaraciones ilegales
signal Z_BUS: bit_vector (0 downto 3) 3 2 1 0
Signal
signal C_BUS: bit_vector (3 to 0)
Z_BUS
bit string literal.

signal SIG_A: bit_vector (7 downto 0)


7 6 5 4 3 2 1 0
SIG_A <= B”1110_0011” --(22710)
SIG_A 1 1 1 0 0 0 1 1

B”11111010” B”1111_1010” Designación Base


B Binaria
X”FA” B”11111010”
O Octal
O”372” B”011111010”
X Hexadecimal

 Es una notación para especificar el valor de un


bit_vector.
Asignació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); 1 2 3 4
signal C_BUS: bit_vector(1 to 4); Signal

Z_BUS <= C_BUS; C_BUS

Z_BUS(3) <= C_BUS(1);


Z_BUS(2) <= C_BUS(2); 3 2 1 0
Z_BUS(1) <= C_BUS(3); Signal
Z_BUS(0) <= C_BUS(4);
Z_BUS
Parte 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);
Los slices de vectores de bit son útiles
legal debido a que a menudo pueden ser
Z_BUS (3 downto 0) <=“00” vistos como colecciones de campos,
C_BUS:(2 to 4) <= Z_BUS (3 downto 1); donde cada campo lleva una pieza de
información.
Por ejemplo un vector de bit que
ilegal represente la instrucción de una
Z_BUS (0 to 1) <=“111” computadora puede contener un
campo representando el tipo de
instrucción.
Concatenació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.
Concatenació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
signal Z_BUS: bit_vector(3 downto 0);
signal A,B,C,D: bit;
signal BYTE: bit_vector(7 downto 0);
signal A_BUS: bit_vector(3 downto 0);
signal B_BUS: bit_vector(3 downto 0);

Z_BUS<= A & B & C & D


BYTE<=A_BUS & B_BUS
Agregados.

signal Z_BUS: bit_vector(3 downto 0);


 Otro método de signal A,B,C,D: bit;
asignación a
elementos de un Z_BUS<=(A, B, C, D);
arreglo es conocido
como agregado.
Un agregado esta Z_BUS(3)<=A;
Z_BUS(2)<=B;
contenido entre Z_BUS(1)<=C;
paréntesis y las Z_BUS(0)<=D;
asignaciones a cada
elemento son
separadas por
comas.
Especificando los elementos por nombre.

 Es posible asignar a los signal X: bit_vector(3 downto 0);


elementos de un arreglo signal A,B,C,D: bit;
signal BYTE:bit_vector(7 downto 0)
por nombre o por
posición.
X<= (3=>’1’, 1 downto 0 =>’1’, 2=>B)
 Este ejemplo demuestra
que también un rango
del arreglo puede ser nombre rango nombre
asignado, siempre y
cuando el mismo valor
sea asignado a cada
elemento del rango.
Others, soporte para síntesis.

 Los agregados tienen la


habilidad de usar la signal Z_BUS: bit_vector (3 downto 0);
sentencia others, la cual signal A,B,C,D: bit;
signal BYTE:bit_vector(7 downto 0);
asignará un valor a todos los
otros elementos de un X<= (3=>’1’, 1 =>’0’, others=>B)
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.

También podría gustarte