Sei sulla pagina 1di 8

Salidas Las Salidas de la MSS se declaran fuera del PROCESO donde se declararon las transiciones.

Hay tres formas de declarar las salidas: 1. Con declaraciones concurrentes (RTL) 2. Con PROCESS / IF - THEN - ELSE 3. Con PROCESS / CASE - IS - WHEN Salidas con declaraciones concurrentes: Utilizamos asignaciones directas RTL para lasa salidas fijndonos en que estados son verdaderas.

Aqu se especifica que si la MSS esta en el estado c, entonces la salida z debe ser 1, si no, debe ser 0.

49

Salidas con PROCESS / IF THEN - ELSE: Usamos un nuevo process donde la lista de sensibilidad est conformada por la variable de estado y y las entradas condicionales (MEALY) de la MSS.

Salidas con PROCESS / CASE IS - WHEN: Est forma es recomendada cuando hay salidas que se activan en diferentes estados:

50

Declaraciones concurrentes y secuenciales.

El diagrama indica como las declaraciones concurrentes son ejecutados en VHDL. Las declaraciones concurrentes son aquellas que aparecen entre las declaraciones begin y end de una architecture. Esta rea de architecture se llama rea concurrente. En VHDL todas las declaraciones en el rea concurrente son ejecutadas al mismo tiempo y hay cuatro tipos diferentes de declaraciones concurrentes: 1. declaracin de seal simple (simple signal assignment) signal x, y, s : std_logic; Ejemplo: s <= x + y; 2. declaracin de seal seleccionada (selected signal assignment) signal x1, x2, Sel, y : std_logic; Ejemplo: with Sel select y <= x1 when 0, x2 when others; 3. declaracin de seal condicional (condicional signal assignment) Ejemplo: z <= '1' when y = c else '0'; 4. declaraciones generar (generate statements). Nota: se hablara ms adelante 51 sobre esta declaracin.

El diagrama muestra como se ejecutan las declaraciones secuenciales en VHDL. Las declaraciones secuenciales son ejecutadas una despus de la otra en el orden que ellas aparecen entre las declaraciones begin y end de un process. Por esto razn las declaraciones secuenciales siempre deben ser separados de las declaraciones concurrentes. La interaccin de las declaraciones concurrentes y secuenciales es ilustrada en el siguiente ejemplo. Mientras las declaraciones if elsif end if en el process son ejecutadas secuencialmente (una despus de la otra), el cuerpo de process es tratado por VHDL como una simple declaracin concurrente y es ejecutado al mismo tiempo que otras declaraciones concurrentes. La declaracin process es una declaracin concurrente, es decir, si un cdigo VHDL tiene varias declaraciones de process, son ejecutados concurrentemente. Pero las declaraciones dentro de cada declaracin process son secuenciales y son ejecutados en orden, una despus de la otra. 52

Por ejemplo, process (Resetn, Clock) Entre los parntesis se indica la sensitivity list que es un conjunto de seales cuyo cambio activa la ejecucin de process. La Sensitivity list es opcional, pero en caso de no existir se hace necesaria la presencia dentro de declaracin process de una o mas sentencias wait.
53

La declaracin process puede incluir otras declaraciones dentro de ella (declaraciones if, case y loop). Las declaraciones if, case y loop pueden ser usadas para describir tanto circuitos combinatoriales, como secuenciales. La sentencia if then elsif - else es una declaracin secuencial usada para describir lgica condicional. Puede haber varias elsif, pero solo una else al final. Debe terminar con end. No existe una relacin directa entre declaraciones concurrentes y secuenciales y la lgica combinatorial y secuencial.

54

EJEMPLO CODIGO VHDL : Formato : X / A,B

0/00

a
0/01 1/00

b
0/10 1/01 1/11

c
0/11 1/10

55

Estilo alternativo del cdigo VHDL.


No se especifica una manera estndar para escribir el cdigo VHDL que representa el funcionamiento de una MSS. El cdigo analizado es solo una posibilidad. La otra posibilidad esta presentada a continuacin. Dos seales son usadas para representar el estado de la MSS: y_presente, que es el estado presente y y_siguiente que es el estado siguiente. No se puede usar las letras maysculas ya que VHDL no hace diferencia entre letras maysculas y minsculas.

El cdigo especifica dos process separados. Primer process describe la tabla de estados (tabla de verdad) como un circuito combinatorial. Se usa declaracin case para indicar el valor de y_siguiente para cada valor de y_presente y w. Es decir, se describe el bloque del Decodificador de estado Siguiente.
56

57

El segundo process describe el bloque de Memoria de Estados. El cdigo indica que con cada flanco de subida de Clock y_presente va a tomar el valor de y_siguiente. Dentro del process tambin se indica que y_presente ser igual a a cuando Resetn = 0. Los circuitos que producir el compilador de VHDL para cada versin del cdigo sern probablemente diferentes, pero realizaran una funcin idntica. Pero aunque las dos versiones de cdigo son funcionalmente equivalentes, la primera versin es ms recomendable. Max+plus II reconocer esta versin como una MSS. Al simularla el valor de la seal y es reportado usando los nombres de los estados a, b y c. Para la segunda versin del cdigo, Max+plus II reporta solo valores lgicos de los seales. El valor de la seal y_presente es presentado por el simulador como 00, 01 y 10.

58

Diseo de una MSS modelo Mealy. En los diseos anteriores cada estado tena definido un valor de salida. Las salidas se mantenan constantes durante todo el estado. A este tipo se las llama salidas incondicionales. Tales MSS se conocen como mquinas de modelo Moore. En las MSS modelo Mealy, los valores de salida dependen tanto del estado como de los valores presentes en las entradas. Por esto se conocen como salidas condicionales. Ejemplo: Disear una MSS que detecte dos unos consecutivos en la entrada W. La salida Z debe ser igual a 1 en el mismo periodo de Clock en el que se produce la deteccin.

Solo dos estados son necesarios porque permitimos que el valor de la salida Z dependa tanto del valor de Estado Presente como del valor de la entrada W.
59

Ya que son solo dos estados, se los puede usar un cdigo de un bit. Por lo tanto, solo se require un flop-flop para el bloque de Memoria de Estados.

Formato : w / z
0/0 1/0 1/1

a
Resetn 0/0

El cdigo VHDL para MSS de modelo Mealy es similar el de modelo Moore.


60

61

La nica diferencia entre los cdigos para MSS modelo Mealy y modelo Moore esta en la parte de cdigo que describe la salida. Para la MSS de modelo Mealy la salida Z esta definida usando declaracin case - when. Cuando la MSS esta en estado a, Z debe ser 0, pero cuando esta en estado b, Z debe tomar valor de W. La segunda declaracin de case when no esta dentro de la declaracin de if que espera por la transicin de Clock, porque el valor de Z debe depender no solo del estado sino tambin de la entrada W en las MSS de modelo Mealy.

62

EJEMPLO CODIGO VHDL

Formato : DT / P
Resetn

0/0

a
1/0 1/0

0/0

b
0/0 1/1

63

Potrebbero piacerti anche