Sei sulla pagina 1di 9

Sincronizacin de seales externas.

El bloque receptor-de-monedas al detectar las monedas de cinco y diez centavos generar dos seales: senseN y senseD. Pero el receptor-de monedas es un dispositivo mecnico, por lo tanto, es muy lento comparado con el circuito digital que debe recibir estas seales. Esto significa que las seales senseN y senseD estarn presente durante un gran nmero de periodos de Clock de la MSS. La MSS puede tomar estas seales largas como si hubieran ingresado varias monedas. Por lo tanto, es necesario sincronizar las seales senseN y senseD para que por cada moneda introducida la seal que recibe la MSS no dure mas que un periodo de Clock. Para esto se puede implementar un circuito de sincronizacin que recibe la seal senseN o senseD de cualquier duracin y genera la salida N o D que dure solo un periodo de Clock.

39

Sincronizacin mediante Flip Flops externos


Se conectan dos Flip Flops en cascada de tal forma que la salida N solo sea verdadera un pulso de reloj, mientras la seal pasa del primer FF al segundo.

40

Sincronizacin mediante el diagrama de estados


Tambin se pueden ajustar seales lentas mediante verificaciones en el diagrama de estados: Ejemplo : Disear una MSS modelo MOORE cuya salida F sea alta, si se presiona y suelta el pulsador B dos veces.
Formato : B / F
0/0

a
1/0 1/0

b El estado a es de espera inicial. Al presionar el pulsador B, la MSS pasa al estado b, donde queda retenida por tantos pulsos de reloj mientras se mantenga presionado B. Solo si se suelta B la MSS pasa al estado c. En los estados d y e se repite el esquema para detectar que se presion B por segunda vez. Luego regresa al estado a generando alto en la salida F.
0/0 /1 0/0

c
1/0 1/0

d
0/0

e
41

Diseo de una MSS usando VHDL y herramientas CAD.


Una manera tradicional (un poco obsoleta) de uso de herramientas CAD consiste en disear manualmente el circuito secuencial a partir de un Diagrama de Estados usando los flip-flops, puertas, etc. Luego introducir el circuito en el software de diseo y simulacin utilizando el Editor Grafico. Utilizando este software se puede simular el comportamiento de la MSS e implementarla en un PLD. Es bastante trabajoso manualmente sintetizar la MSS a partir de un Diagrama de Estados. Resulta ms atractivo describir el Diagrama de Estados utilizando un HDL (Hardware Description Language) como VHDL. A continuacin se presenta ejemplo del cdigo VHDL para la MSS del primer Ejemplo. Analizaremos el cdigo lnea por lnea.

42

Reset 0/0 1/0

Formato : w / z

a
0/0

0/1

1/0

c
1/1

43

La entity describe las conexiones externas e indica todos los terminales de entrada y salida que permiten al subcircuito diseado interactuar con los dems subcircuitos o subsistemas. A continuacin, mediante la keyword port se especifican los nombres de estos terminales y se indica su direccin (modo): in entrada out salida inout entrada o salida buffer salida de una entity (o component) cuyo valor puede ser ledo o realimentado, pero puede tener solamente una asignacin. Tambin se indican el tipo de datos que pueden llegar a estos terminales. VHDL fue estandartizado por la IEEE. Las lneas 1-2 proporcionan acceso a las library de IEEE. La declaracin library ieee es la declaracin de la biblioteca general de solo lectura que contiene un conjunto de definiciones estndar para VHDL que pueden ser usados por varios diseos a la vez. La declaracin use ieee.std_logic_1164.all es la declaracin del paquete estndar donde guardan definiciones de tipos de seales, variables, constantes, etc. Las siguientes lneas declaran una entity que se llama simple y tiene tres terminales de entrada Clock, Resetn y w, y un terminal de salida z.
44

La informacin esta representada en cdigo VHDL como objeto de datos. Se proporcionan tres clases de objetos: seales, constantes y variables. Para describir los circuitos lgicos, los ms importantes objetos de datos son seales (signal). Ellos representan las seales lgicos (alambres) en el circuito. Los constantes y variables se usan menos frecuentemente. Hay tres lugares donde las seales pueden ser declarados en VHDL: en la declaracin de entity, en la seccin de declaraciones de architecture y en la seccin de declaraciones de package. Las seales (signal) son objetos usados para conectar elementos concurrentes, tales como component, process, y asignaciones concurrentes de manera similar que los alambres son usados para conectar componentes en un diagrama esquemtico. Siempre tienen que ser declaradas con un tipo asociado (type). signal signal_name: type_name; type de una seal determina los valores legales que la seal puede tener y sus usos legales en cdigo VHDL. Son ejemplos de type para signal: bit, bit_vector, std_logic, std_logic_vector, integer.

45

Para el bloque de architecture se utilizo la palabra comportamiento ya que vamos a describir el comportamiento de la MSS, pero se puede utilizar cualquier palabra vlida en VHDL. La siguiente lnea introduce la keyword type, que representa una caracterstica especial de VHDL. Palabra clave type permite crear nuevo tipo de seales. El nuevo tipo de seales es llamado estado y el cdigo especifica que una seal de este tipo puede tener tres posibles valores: a, b y c. La siguiente lnea define una signal llamado y y declara que es tambin de tipo estado. La seal y es usada para representar la salidas de los flip-flops que implementan el bloque de Memoria de Estados en una MSS sin especificar el nmero de flip-flops, es decir, y representa el cdigo de Estado Presente sin especificar el nmero de bits del cdigo. Solo especifica que y puede tener tres simblicos valores a, b y c. El compilador VHDL automticamente elije un nmero apropiado de los flipflops cuando sintetiza el circuito para implementar la MSS. Tambin elije las asignaciones de cdigo de estados para los estados a, b y c. El Siguiente paso es especificar las transiciones entre los estados, por lo tanto, las siguientes lneas representan una de las maneras de describir el Diagrama de Estados.

46

Transiciones

La declaracin process describe la MSS como un circuito secuencial. Entre parntesis esta la lista de sensibilidad (sensitivity list), es decir las seales de entrada que pueden causar que process cambie. En nuestro caso son Resetn y Clock. La seal w no est incluida en la lista de sensibilidad porque un cambio solo en el valor de entrada w, no afecta al etado y hasta que ocurre el flanco de subida de Clock. La nica seal que se modifica en el process es la salida y.
47

Las lneas iniciales especifican que MSS debe entrar en estado a si Resetn = 0. Con la letra n se acostumbran indicar que la seal es de lgica negativa. Ya que la condicin de la declaracin de if no depende de la seal de Clock esto significa que Resetn es asincrnico. Cuando seal de Resetn no es verdadera la declaracin de elsif especifica que circuito espera por el flanco positivo de Clock. El comportamiento de la seal de salida y es definido por la declaracin secuencial case - when. case - when es la declaracin secuencial usada dentro de process que selecciona y ejecuta una alternativa de entre varias posibles, evaluando una expresin dada (y en nuestro caso). Debe terminar con end. La declaracin case - when se distingue de la declaracin if then else en que no hay prioridad entre alternativas. Ya que la declaracin case esta dentro de la condicin elsif, cualquier cambio de y puede tener lugar solo en el flanco positivo de Clock. Es decir, la condicin elsif implica que la seal y debe ser implementado como la salida de uno o mas flip-flops. Cada clusula when en la declaracin case representa un estado de la MSS.
48

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

Potrebbero piacerti anche