27
SISTEMAS DIGITALES II FIEC00745 FACULTAD DE INGENIERIA EN ELECTRICIDAD Y COMPUTACION Ing. Ronald Ponguillo Intriago [email protected]

2 4 Ejemplos MSS VHDL

Embed Size (px)

Citation preview

SISTEMAS DIGITALES II

FIEC00745FACULTAD DE INGENIERIA EN ELECTRICIDAD Y COMPUTACION

Ing. Ronald Ponguillo Intriago [email protected]

CAPITULO 2

CIRCUITOS SECUENCIALES SINCRÓNICOS

Ing. Ronald Ponguillo Intriago [email protected]

Temas a tratar…

Diseño de una MSS usando VHDL y herramientas CAD

Ing. Ronald Ponguillo Intriago3

Algunas Observaciones Una manera tradicional (un poco obsoleta) de uso de herramientas CAD consiste en diseñar manualmente el circuito secuencial a partir de un Diagrama de Estados usando los flip-flops, puertas, etc.

Y luego introducir este circuito en el software de diseño y simulación 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.

Ing. Ronald Ponguillo Intriago4

Algunas Observaciones Resulta más atractivo describir el Diagrama de Estados utilizando un HDL (Hardware Description Language), por ejemplo, lenguaje VHDL.

Analizaremos el siguiente ejemplo de una Maquina Secuencial Sincrónica Simple

Ing. Ronald Ponguillo Intriago5

ANALISIS DE UNA MAQUINA SECUENCIAL SIMPLE

Ing. Ronald Ponguillo Intriago6

Acceso a la libreria IEEE Uso del paquete std_logic_1164

Entidad creada con la herramienta CAD QUARTUS II de ALTERA

Ing. Ronald Ponguillo Intriago7

Definición de nuevo tipo de dato ESTADO

Creación de senial con el nuevo tipo de dato YTransiciones de estados creado por la herrmienta QUARTUS II

Decodificador de Salida

Decodificador de Estado

Siguiente y Memoria de Estados

Diagrama de Tiempo

Ing. Ronald Ponguillo Intriago8

Diagrama de

Estados?

Circuito creado por Quartus II

Declaraciones concurrentes y secuenciales.

Declaración concurrente.

Ing. Ronald Ponguillo Intriago9

El diagrama indica como las declaraciones concurrentes son ejecutados en VHDL.

Las declaraciones concurrentes son aquellas que aparecen entre declaraciones begin y end de una architecture.

Esta área de architecture se llama área concurrente.

Declaraciones Concurrentes En VHDL todas las declaraciones en el área concurrente son ejecutadas al mismo tiempo y hay cuatro tipos diferentes de declaraciones concurrentes:

1. declaración de señal simple (simple signal assignment)

signal x, y, s : std_logic; Ejemplo: s <= x + y;

2. declaración de señal selecto (selected signal assignment) signal x1, x2, Sel, y : std_logic;

Ing. Ronald Ponguillo Intriago10

Ejemplo: with Sel select y <= x1 when ‘0’, x2 when others;

Declaraciones Concurrentes 3. declaración de señal condicional (condicional signal assignment)

4. declaraciones generar (generate statements).

Nota: se hablara más adelante sobre esta declaración.

Ing. Ronald Ponguillo Intriago11

Ejemplo: z <= '1' when y = c else '0'; Ejemplo: Y <= A when Sel =”00” else B when Sel =”01” else C when Sel =”10” else D when others;

Declaraciones secuenciales.

Ing. Ronald Ponguillo Intriago12

El diagrama muestra como se ejecutan las declaraciones secuenciales en VHDL.

Las declaraciones secuenciales son ejecutadas una después de la otra en el orden que ellas aparecen entre las declaraciones begin y end de un process.

Por esto razón las declaraciones secuenciales siempre deben ser separadas de las declaraciones concurrentes

Declaraciones secuenciales. Mientras las declaraciones if – elsif – else - end if en el process son ejecutadas secuencialmente (una después de la otra), el cuerpo de process es tratado por VHDL como una simple declaración concurrente y es ejecutado al mismo tiempo que otras declaraciones concurrentes.

La declaración process es una declaración concurrente, es decir, si un código VHDL tiene varias declaraciones de process, son ejecutados concurrentemente.

Pero las declaraciones dentro de cada declaración process son secuenciales y son ejecutados en orden, una después de la otra.

Ing. Ronald Ponguillo Intriago13

Ing. Ronald Ponguillo Intriago14

Algunas Acotaciones La declaración process puede incluir otras declaraciones dentro de ella (declaraciones if – then – elsif – else, case - when y for - loop).

Las declaraciones if, case y loop pueden ser usadas para describir tanto circuitos combinatoriales, como secuenciales dentro de process.

Cuando la declaración if – then – elsif - else es usada para describir lógica combinatorial puede haber varias elsif, pero solo una else al final. Debe terminar con end.

No existe una relación directa entre declaraciones concurrentes y secuenciales y la lógica combinatorial y secuencial

Ing. Ronald Ponguillo Intriago15

Estilo alternativo del código VHDL VHDL no especifica una manera estándar para escribir el código que representa el funcionamiento de una MSS. El código analizado es solo una posibilidad. La otra posibilidad esta presentada a continuación

Dos señales 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 mayúsculas ya que VHDL no hace diferencia entre letras mayúsculas y minúsculas.

Ing. Ronald Ponguillo Intriago16

Decodificador de estado Siguiente

Ing. Ronald Ponguillo Intriago17

Se describe el bloque del Decodificador de estado Siguiente

Memoria de Estados

Ing. Ronald Ponguillo Intriago18

El código indica que con cada flanco de subida de Clock y_presente va a tomar el valor de y_siguiente

El process también indica que y_presente será igual a “a” cuando Resetn = 0.

Decodificador de Salidas

Ing. Ronald Ponguillo Intriago19

Los circuitos que producirá el compilador de VHDL para cada versión del código serán probablemente diferentes, pero realizaran la misma función.

Circuito creado por Quartus II

Diagrama de Tiempo

Ing. Ronald Ponguillo Intriago20

Asignación de códigos de estados en VHDL.

La asignación del código puede tener un impacto en la complejidad del circuito diseñado.

Un objetivo obvio del proceso de asignación del código de estados es minimizar el costo de implementación.

Quartus II de Altera trata de encontrar tal codificación de los estados que minimiza el numero total de términos AND que va a ser utilizada en un CPLD donde se carga el circuito.

VHDL permite al usuario asignar los códigos de estados que se desea.

No hay una manera estándar para hacerlo.

Ing. Ronald Ponguillo Intriago21

Algunas Acotaciones Quartus II recomienda hacer la asignación de códigos usando la característica atributo (attribute) del VHDL.

Un attribute se refiere a algún tipo de información sobre un objeto.

Por ejemplo, todas las signals en VHDL automáticamente tienen unos attribute predefinidos.

Un ejemplo es el atributo event que se usa para especificar un flanco de reloj en Clock ‘event.

A parte de los attribute predeterminados, el usuario puede crear sus propios attribute.

Estos atributos pueden ser usados para dar algún tipo de información a un objeto, en nuestro caso, a type estado, en código VHDL.

Ing. Ronald Ponguillo Intriago22

Creación de Atributo en VHDL

Ing. Ronald Ponguillo Intriago23

Primero se define el nuevo atributo llamado enum_encoding que es de tipo string (sarta, cadena).

En la siguiente línea se asocia ENUM_ENCODING con el tipo estado y se especifica que el atributo tiene el valor “00 01 11”.

El compilador de Quartus II usa el valor de ENUM_ENCODING para hacer la asignación de estados “a” = 00, “b” = 01; “c” = 11.

Circuito y Diagrama de Tiempo

Ing. Ronald Ponguillo Intriago24

Otra manera de asignar los códigos de Estado

Ing. Ronald Ponguillo Intriago25

En este caso y_presente y y_siguiente están definidos como señales de dos bits. Los nombres de estados son definidos como constantes con el valor correspondiente a codificación deseada.

VHDL requiere que la declaración de case para y_presente incluye una cláusula when para todos los posibles valores de y_presente.

Ya que en este caso y_presente es una señal de std_logic_vector debemos especificar una cláusula when others.

Circuito creado por Quartus II

Ing. Ronald Ponguillo Intriago26

Diagrama de Tiempo

Ing. Ronald Ponguillo Intriago27