Documentos de Académico
Documentos de Profesional
Documentos de Cultura
7 Multiples Procesos
7 Multiples Procesos
Introduccin
Aunque es conveniente describir sistemas en forma secuencial, esto no ocurre en la
realidad. El Mundo No es Secuencial.
Todos los vehculos se mueven al mismo tiempo,
es decir, concurrentemente.
Si cada vehculo lo consideramos
como un sistema, tenemos sistemas
operando concurrentemente.
Sin embargo, a un nivel de detalle
apropiado, se puede especificar el
funcionamiento de cada sistema
como una secuencia de acciones o
procesos.
CPU
MEMORIA
FD
SISTEMA
I/O
HD
CPU : Process
Begin
. . . .
End Process CPU;
I_O : Process
Begin
. . . .
End Process I_O;
Memoria : Process
Begin
. . . .
End Process Memoria;
FD : Process
Begin
. . . .
End Process FD;
HD : Process
Begin
. . . .
End Process HD;
El nivel de detalle en cada proceso depende de lo que est especificando. Por ejemplo,
el proceso que especifica el comportamiento del procesador es mas complejo que el de
la memoria.
Una Arquitectura puede tener ms de un proceso y ellos sern ejecutados en forma
concurrente.
Architecture Ejemplo of Microcomputador is
Signal DataBus : Bit_Vector (31 downto 0);
begin
CPU : Process
Begin
. . . .
End Process CPU;
Memoria : Process
Begin
. . . .
End Process Memoria;
. . .
HD : Process
Begin
. . . .
End Process HD;
End Architecure Ejemplo;
P2 : Process ( B, C )
Begin
Proposicin 1;
Proposicin 2;
Proposicin 3;
Proposicin 4;
End Process P2;
P3 : Process ( B )
Begin
Proposicin 1;
Proposicin 2;
End Process P3;
P1 : Process( A, B, E)
Begin
Proposicin 1;
Proposicin 2;
D <= expresion1;
End Process P1;
P2 : Process ( A, C )
Begin
Proposicin 1;
Proposicin 2;
Proposicin 3;
E <= expresion2;
End Process P2;
P3 : Process ( B, D )
Begin
Proposicin 1;
Proposicin 2;
End Process P3;
End Architecture SomeArch;
P2 : Process ( C, D )
Begin
Inter2 <= C OR D;
End Process P2;
C
D
B
X
C
D
S
A
A
Y
B
10
11
COMPUERTA PROGRAMABLE
Dato1
Salida
Dato2
Modo
12
SigA : 0
SigB : 3
SigC : 1
Driver_SigC :
13
Para verificar si ocurri un flanco de subida o bajada en alguna seal (usualmente CLK), es
necesario conocer si su valor es 1 o 0 y si acaba de ocurrir un cambio en ella, el atributo
event permite conocer la ltima condicin, para la primera se requiere evaluar otras
condiciones.
If CLKevent AND CLK = 1 AND CLKlast_value = 0 then
. . . . -- Detecta un flanco de subida
If CLKevent AND CLK = 0 AND CLKlast_value = 1 then
. . . . -- Detecta un flanco de bajada
14
Lazos Universales :
Existen algunos lazos for que por lo general trabajan en un arreglo unidimensional, sin
importar cual sea el rango de ese arreglo, para simplificar este tipo de operaciones VHDL
introduce los atributos: range y reverse_range su uso simplifica los lazos, ya que el nmero de
iteraciones es el mismo que el rango del arreglo.
For i in ArrDatosrange loop
. . . .
For i in ArrDatosreverse_range loop
. . . .
Indice del Bit ms significativo :
15
Nota:
16
DMA: Process
Begin
DataBus <= . . .;
DataBus <= . . .;
. . . <= DataBus;
. . . <= DataBus;
DataBus
CPU: Process
Begin
DataBus <= . . .;
. . . <= DataBus;
end Process CPU;
R/G
R/B
G/R
G/B
B/R
B/G
Z
R
Z <= A;
. . .
Z <= B;
Z
G/B
18
Z <= A;
. . .
Z <= B;
Como consecuencia, si solo usamos los tipos bit o bit_vector, no ser posible definir buses
compartidos como ocurre en un procesador o algn sistema similar.
Lo que significa que requerimos de otro tipo de datos que maneje ms de 2 valores y
cuente con una funcin de resolucin definida para poder mezclar valores distintos.
19
20
21
Se pueden aplicar todos los definidos para los tipos bit y bit_vector, es decir: and, nand, or,
nor, xor y not. Y debido a que son 9 posibles valores, se tiene una tabal de definicin para
cada operacin, por ejemplo para la and:
CONSTANT and_table : stdlogic_table := (
-- ------------------------------------------------------------ U X 0 1 Z W L H -- ------------------------------------------------------------( U, U , 0 , U , U, U, 0, U, U ), -( U, X , 0 , X , X, X, 0, X, X ), -( 0, 0 , 0 , 0 , 0, 0, 0, 0, 0 ), -( U, X , 0 , 1 , X, X, 0, 1, X ), -( U, X , 0 , X , X, X, 0, X, X ), -( U, X , 0 , X , X, X, 0, X, X ), -( 0, 0 , 0 , 0 , 0, 0, 0, 0, 0 ), -( U, X , 0 , 1 , X, X, 0, 1, X ), -( U, X , 0 , X , X, X, 0, X, X ) -);
U
X
0
1
Z
W
L
H
-
Por conveniencia, para este tipo especial de datos se han incluido dos funciones: falling_edge
para detectar los flancos de bajada y rising_edge para los de subida.
22