Академический Документы
Профессиональный Документы
Культура Документы
F. Santiago E. 1
Introducción
El Mundo No es Secuencial.
Todos los vehículos se mueven al mismo tiempo,
es decir, concurrentemente.
F. Santiago E. 2
Un sistema : Múltiples Procesos
Cada sub-sistema es especificado como un proceso separado.
MICROCOMPUTADORA
SISTEMA
CPU MEMORIA
I/O
FD HD
F. Santiago E. 3
La complejidad de cada proceso está en función de lo que esté especificando.
• El proceso CPU es mas complejo que el proceso Memoria.
Una Arquitectura puede tener más de un proceso, los cuales, dependiendo de sus
condiciones de reanudación, se pueden ejecutar en forma concurrente.
Memoria : Process(DataBus)
Begin
. . . .
End Process Memoria;
. . .
HD : Process(DataBus)
Begin
. . . .
End Process HD;
End Architecure Ejemplo;
F. Santiago E. 4
Señales en sistemas multiprocesos
• Un proceso permanece suspendido mientras no ocurren cambios en las
señales que están en su lista de sensibilidad.
• Con múltiples procesos es lo mismo; si una señal cambia, los procesos
que la incluyan en su lista de sensibilidad serán restaurados.
• Un proceso no distingue entre señales externas e internas, por ello, un
proceso puede ser activado con un cambio causado por otro.
• Las señales son el único medio para intercambiar información entre
procesos.
• Las variables son locales a los procesos.
F. Santiago E. 5
Comunicación entre procesos
Architecture SomeArch of SomeEnt is
signal A_DONE: bit;
begin
Proceso A Proceso B
Señal
A_DONE
A: process( ) B: process(A_DONE)
begin begin
if S1 then …
A_DONE <=‘1’; …
… end process;
end process;
End SomeArch;
F. Santiago E. 6
Procesos muy simples . . .
Considerando el siguiente Architecture Combinacional1 of Combinacional1 is
circuito: Sigal Inter1, Inter2 : bit;
Begin
G1 : Process( A, B)
Begin
Inter1 <= A OR B;
A
End Process G1;
B G1
G2 : Process ( C, D )
X
G3 Begin
C Inter2 <= C OR D;
D G2 End Process G2;
F. Santiago E. 7
Asignación concurrente de señal
VHDL simplifica los procesos que únicamente incluyen una asignación, sustituyéndolos por
una proposición llamada asignación concurrente de señal.
F. Santiago E. 8
Activación de asignaciones concurrentes
S
Architecture Gates of Gates is
Sigal Inter1, Inter2, SN : bit;
A
Begin
F. Santiago E. 9
Asignación condicional de una señal
• Una variante de las asignaciones concurrentes son las asignaciones condicionales.
• La asignación de la señal está condicionada por el valor de otra señal.
• Su comportamiento se puede describir con una proposición condicional (en un
proceso).
S Proposición condicional:
F. Santiago E. 10
Asignación condicional vs. Proposición condicional
F. Santiago E. 11
Asignación selectiva de señal
• Se puede ver como una ampliación de la asignación condicional, se utiliza cuando una
señal va a tomar uno de varios valores posibles. Su sintaxis:
• Sólo se realiza una asignación, por eso de manera intermedia se utilizan comas.
F. Santiago E. 12
COMPUERTA PROGRAMABLE
Dato1
Estructura condicional múltiple:
Salida
Dato2
Modo Architecture Gate_Prog of Gate_Prog is
Begin
End AsSel;
F. Santiago E. 13
Múltiples fuentes para una señal
Las señales pueden ser manipuladas por múltiples procesos, para lectura o escritura. Por
ejemplo, en una microcomputadora, diferentes elementos como la CPU, Memoria o DMA
tienen acceso al bus de datos.
end Process Memoria; end Process DMA; Se debe evitar que existan
múltiples fuentes para una señal,
DataBus o bien, establecer un mecanismo
que las maneje y coordine.
CPU: Process
Begin
DataBus <= . . .;
. . . <= DataBus;
F. Santiago E. 14
Múltiples fuentes . . . debe resolverse
• Algunas herramientas de simulación o síntesis marcan como un error si una señal tiene
múltiples fuentes, sin embargo, el lenguaje esta preparado para hacer una “mezcla”, si
fuera necesario.
• A esta mezcla de señales se le conoce como “resolución” y se especifica como una
tabla conocida como función de resolución.
• El concepto se explica con colores:
R A Z
R G B
R
R R R/G R/B Z <= A; R B
. . .
G G/R G G/B Z <= B;
G A Z
B B/R B/G B
G/B
B B
La función de resolución requiere más valores que los existentes en el conjunto básico.
F. Santiago E. 15
Dos valores no son suficientes . . .
• Algo similar debe ocurrir con múltiples fuentes de asignación para una señal.
• El problema con las señales del tipo bit es que sólo cuenta con 2 valores, por lo que no
hay forma de mezclar un „1‟ con „0‟ o viceversa.
0 1 Z <= A;
. . . No es posible con los
0 0 ?
Z <= B; tipos bit y bit_vector
1 ? 1
F. Santiago E. 16
Otros valores “ lógicos ”
En sistemas digitales reales se pueden presentar otros valores “lógicos” :
• En el diseño de un sistema hay situaciones en las cuales no importa el valor de una
señal, puede ser „1‟ o „0‟, pero en realidad no importa (X).
• Los buffers de tres estados desconectan una parte de un sistema con un estado de
alta impedancia (Z), el cual tampoco es „1‟ ó „0‟.
Estos y otros valores son manejados por el tipo STD_LOGIC, el cual está definido en el
paquete STD_LOGIC_1164.
F. Santiago E. 17
El tipo STD_LOGIC
Está declarado en el paquete std_logic_1164 y consiste de una enumeración con 9 valores:
TYPE STD_LOGIC is
( „U‟, -- No asignado
„X‟, -- No importa
„0‟, -- 0 lógico
„1‟, -- 1 lógico
„Z‟, -- Alta impedancia
„W‟, -- 0 o 1 débil (no importa)
„L‟, -- 0 débil
„H‟, -- 1 débil
„–‟ ); -- Desconocido
F. Santiago E. 18
Operadores aplicables al tipo STD_LOGIC
Se pueden aplicar todos los definidos para los tipos bit y bit_vector, es decir: AND, NAND, OR,
NOR, XOR y NOT.
Se tiene una tabla de definición para cada operación, por ejemplo para la AND:
CONSTANT AND_table : std_logic_table := (
-- -----------------------------------------------------------
-- U X 0 1 Z W L H -
-- -------------------------------------------------------------
( „U‟, „U‟ , „0‟ , „U‟ , „U‟, „U‟, „0‟, „U‟, „U‟ ), -- U
( „U‟, „X‟ , „0‟ , „X‟ , „X‟, „X‟, „0‟, „X‟, „X‟ ), -- X
( „0‟, „0‟ , „0‟ , „0‟ , „0‟, „0‟, „0‟, „0‟, „0‟ ), -- 0
( „U‟, „X‟ , „0‟ , „1‟ , „X‟, „X‟, „0‟, „1‟, „X‟ ), -- 1
( „U‟, „X‟ , „0‟ , „X‟ , „X‟, „X‟, „0‟, „X‟, „X‟ ), -- Z
( „U‟, „X‟ , „0‟ , „X‟ , „X‟, „X‟, „0‟, „X‟, „X‟ ), -- W
( „0‟, „0‟ , „0‟ , „0‟ , „0‟, „0‟, „0‟, „0‟, „0‟ ), -- L
( „U‟, „X‟ , „0‟ , „1‟ , „X‟, „X‟, „0‟, „1‟, „X‟ ), -- H
( „U‟, „X‟ , „0‟ , „X‟ , „X‟, „X‟, „0‟, „X‟, „X‟ ) -- -
);
F. Santiago E. 19
Uso del tipo STD_LOGIC
• Para usar el tipo std_logic se deben incluir los paquete correspondientes:
Library IEEE;
Use IEEE.STD_LOGIC_1164.all;
Use IEEE.STD_LOGIC_UNSIGNED.all;
• Este tipo de datos cuenta con dos funciones para la detección de flancos:
• falling_edge para flancos de bajada.
• rising_edge para flancos de subida.
F. Santiago E. 20
Función de resolución, tipo STD_LOGIC
U X 0 1 Z W L H -
U U U U U U U U U U
X U X X X X X X X X
0 U X 0 X 0 0 0 0 X
1 U X X 1 1 1 1 1 X
Z U X 0 1 Z W L H X
W U X 0 1 W W W W X
L U X 0 1 L W L W X
H U X 0 1 H W W H X
- U X X X X X X X X
F. Santiago E. 21
Resumen
Una arquitectura puede contener bloques de hardware basados en:
Procesos
Asignaciones concurrentes
Asignaciones condicionales
Asignaciones selectivas
F. Santiago E. 22
Ejercicios
1. Registro síncrono de desplazamiento, con una habilitación para el
desplazamiento y otra para una carga paralela, su reloj debe tener una
frecuencia cercana a 1 Hz.
2. Manejo de un motor a pasos unipolar, con habilitación de movimiento y
control de dirección (se simulará con los LED´s de la tarjeta, con un reloj
cercano a 5 Hz).
3. Contador UP/DOWN de 0 a 9 con salida en 7 segmentos, incrementa con
un botón y decrementa con otro, su reloj debe tener una frecuencia cercana
a 3 Hz.
4. Máquina de estados para detectar si un auto va en sentido contrario (reloj
cercano a 1 KHz).
5. Máquina de estados para determinar la dirección de giro de un motor, a
partir de los pulsos generados por un encoder (reloj cercano a 5 KHz).
F. Santiago E. 23