jueves, 25 de noviembre de 2010

CPLD's. Ejercicio con Máquina de Estados MOORE

El fin de este ejercicio es realizar el estudio de una máquina de estados tipo Moore.

Se desea proyectar un detector de secuencia que reconozca la secuencia de entrada
1 - - - 1’.
• La entrada se llamará ‘a’.
• Y la salida ‘S’.

La máquina se desarrollará mediante un diagrama de flujo de máquina Moore síncrona que será exportado a código VHDL y éste, se utilizará directamente para implementar el diseño en el CPLD.

Creamos un diagrama de estados. Estas serán las variables que vamos a tener. Nosotros al principio tendremos que añadir “a” como entrada en alto activo y “S” como Salida Registrada.
El resto se añadirán solas a medida que creemos los estados.


Esta será la maquina necesaria para nuestro problema.

Una vez echa generamos el código HDL y lo simulamos



 

Ahora añadimos el fichero .vhd y simulamos en el model sim




Y aqui tenemos lo pines necesarios.



Ejercicio máquina de Moore .

martes, 23 de noviembre de 2010

CPLD's. Ejercicio con máquina de estados MEALY

Este es el ejercicio a realizar:
Se desea proyectar el gobierno de un conmutador rotativo, que permite realizar un ciclo completo cuando el tambor haya efectuado una vuelta completa.
El disco solidario del tambor lleva un saliente para actuar sobre el contacto (a).
El pulsador (b) (botón de impulsos) da comienzo al ciclo.
1) Estado inicial (reposo) a=1, b=0, M=0.
2) (b) es accionado y después desaccionado rápidamente (impulso) -> M=1.
3) Cuando el disco ha dado una vuelta, (a) es accionado por el saliente y el disco se para.


Nota.- La acción sobre (b) debe ser contemplada como instantánea (Impulso) y como no instantánea.


La máquina se desarrollará mediante un diagrama de flujo de máquina Mealy síncrona que será transformado en un símbolo gráfico y éste, será utilizado en el diseño gráfico principal.


En este punto se enumeran todos los posibles estados estables que va a poseer la máquina. Estos estados no deben confundirse con los estados internos que se van a necesitar para registrar todo el proceso secuencial.
Tabla de Estados:
Una vez que ya tenemos claro cual será el algoritmo que vamos a ncesitar para resolver este problema nos vamos al ISE.
Alli creamos un nuevo proyecto pero está vez añadiremos una fuente, en la que crearemos los estados.

Esta será la hoja que nos aparezca, para crear los estados. Lo primero que hacemos es definir las variables que vamos a usar.
Una vez las hemos definido creamos los estados y las transiciones:

Damos valor a las ecuaciones de entradas y a las salidas. Poniendo el cursor encima de las transiciones y haciendo clic, con el botón izquierdo del ratón, se nos abrirán las siguiente ventanas:
Hacemos lo mismo para todas las transiciones y quedará algo asi:
 Despues verificamos que no tenemos errores en ninguna transicion .
Pasamos ahora a la simulacion:





Para la simulacion en el State Bench lo primero que hacemos es un reset.
Tras el reset se puede observar como el STATE0’ se pone de color amarillo y como las transiciones por las que pasamos se vuelven de color verde.




Ahora en la pantalla de abajo, vamos dando valores a las entradas y vemos como cambiamos de transicion.


Si nos queda alguna transición por comprobar queda de color rojo.
En la de abajo podemos ir dando valores a las variables para su simulación y nos van diciendo los estados por los que pasamos.
Guardamos este fichero, ya que será necesario para la simulación .
Ahora generamos el código HDL que necesitamos para generar el esquema.


Añadimos el fichero .vhd y creamos un símbolo.
Lo encontramos en la librería y después generamos el esquema.
Una vez que tenemos el esquema lo simulamos, añadiendo el fichero de simulación que creamos anteriormente.


Y como siempre por ultimo, asignamos los pines.




Y damos por finalizado otro ejercicio más.


 

CPLD's. Máquinas de Estados.

El fin de este ejercicio es realizar el estudio de la creación de un símbolo a partir de un módulo basado en una
máquina de estados tipo Mealy.
‘ISE’ integra el programa ‘StateCAD’ con el que podemos crear máquinas de estados finitos.
Una máquina de estados se puede definir, de forma elemental, como un dispositivo digital capaz de ser atravesado por una secuencia predeterminada de estados de una manera ordenada, de forma que el valor de su salida, en un instante determinado, no depende de los estados lógicos de las entradas, sino de la secuencia con que dichos estados se apliquen a las entradas.

Hay 2 tipos de maquinas de estados, la maquina de Moore y la de Mealy.

Toda máquina de Moore se puede transformar en una máquina de Mealy y viceversa.

En una máquina Mealy, las salidas pueden cambiar si cambian las entradas y ello sin necesidad de que se produzca un pulso en el bloque de registros.
En este tipo de representación los estados se muestran dentro de círculos. La transición entre estados se
indica con arcos que conectan dos estados y sobre estos arcos se indica la entrada que provoca la transición
y la salida para esa entrada y el estado actual.

La máquina Moore es un caso particular de máquina Mealy, en la que las salidas dependen exclusivamente del
estado interno y no de las entradas.

jueves, 18 de noviembre de 2010

CPLD's. Creamos un simbolo a partir de VHDL.

VHDL son las siglas de VHSIC (Very High Speed Integrated Circuit) Hardware Description Language


Un diseño en VHDL consiste en un conjunto de unidades separadas, las cuales son compiladas y almacenadas en una librería. Las cuatro unidades compilables son:
Package
Entity
Architecture
Configuration

Lo más importante son las Entidades y las Arquitecturas

Las entidades son el elemento básico del lenguaje VHDL. Una entity define la descripción externa de un circuito:Corresponde a la edición de un símbolo con sus entradas y salidas en un esquemático de un circuito.
Nombre
Puertos de entrada y salida
Parámetros genéricos
Etc...


Una arquitectura especifica el comportamiento, interconexiones y componentes de un diseño antes de ser compilado.

Para realizar el simbolo del decodificador de bcd de 7 segmentos lo que vamos ha hacer es realizar un codigo VHDL a partir de una plantilla.
Xilins nos ofrece una gran variedad de plantillas para que, sin necesidad de conocer el lenguage, podamos realizar nuestros esquemas.

Para ello crearemos un nuevo fichero de tipo VHDL con un bus de entrada de 4 y uno de salida de 7.
Hemos nombrado la entidad como bcd_vhdl y la arquitectura la definimos de tipo Behavorial.
Los nombres les hemos sacado de la plantilla que utilizaremos más adelante.
Una vez finalizado este paso, obtendremos esta ventana:


Esta ventana nos define la entidad y la arquitectura del CPLD.

Buscamos una plantilla para programar en VHDL el decoficador BCD de 7 segmentos.
Ahora copiamos ese codigo en nuestra ventana.
Pero antes, hemos de cambiar aqui, los 1 por 0 y viceversa.
Esto es porque nosotros vamos a usar un display de cátodo comun.
Al final quedaria algo asi:


Finalmente creamos el simbolo y lo incorporamos a nuestro esquema:
Ahora muestro 2 imagenes de la simulacion, echa con el TestBench, igual que en los primeros proyectos:


 Aqui tenemos los pines correspondientes

CPLD's. Contador mediante la creación de un símbolo.

Contador Binario de 4 bit’s con permiso de reloj y borrado asíncrono.
El fin de este ejercicio es realizar el estudio de la creación de un símbolo a partir de un esquema.
Para ello crearemos lo primero un esquema, que convertiremos en un símbolo, para después completar un circuito.
Este es el esquema a realizar.
Ahora generamos el símbolo.
Una vez generado, nos  vamos a symbols y aparecerá una nueva categoría, que contiene el componente.
Si seleccionamos el componente y pinchamos en el número 3, podremos ver el esquema.
Una vez generado el componente, acabaremos el esquema para obtener un contador binario de 4 bit`s.
Para ver el funcionamiento del circuito podemos realizar un test bench igual que en el programa anterior, pero esta vez, el reloj será CLK y deberemos configurar el tiempo que trabaja en Alto y en bajo a 100ns, como muestra la imagen:
Este será el valor
Y aqui tenemos el resultado

Por ultimo nos falta asignar los pines


Trabajando con CPLD's y Xilinx.

Para el estudio de los CPLDs vamos a usar una tarjeta TAD-XC9572. Por ello hemos instalado un programa que nos ayudará en su programación y simulación. Ise Foundation  WebPack 10.1, que se puede encontrar en la página de Xilins. y el Model Sim Simulator.
Lo que vamos a hacer ahora será la creación de un proyecto nuevo. El primer ejercicio será un sumador de 1 bit.
Lo primero que tenemos que hacer es pinchar en File y New Project, y nos aparecerá esta ventana.
En ella escribiremos el nombre de nuestro ejercicio y definiremos como esquematico.

El  CPLD que vamos a utilizar corresponde a la familia XC9500 y en concreto es el XC9572 , aquí vemos alguna característica.
El Package para nosotros será el 84, y la velocidad de -7.
Cómo lenguage escogeremos el VHDL y el simulador el Model-Sim.

A continuación nos preguntarán que  clase de hoja queremos añadir, en nuestro caso será un esquematico.

Después de esto, nos preguntará si queremos añadir una fuente, esto puede resultarnos útil si tenemos algo de otros ejercicios. De momento, para este ejercicio lo dejaremos en blanco.

A continuación daremos a Next  y nos mostrará el resultado de todo lo que hemos escogido. Entonces obtendremos la pantalla de trabajo, donde realizaremos el esquema del sumador.

Sería algo asi. Finalizado y verificado, por si hay errores.

Pasaremos a asignar los pines del dispositivo.
Para ello, desde implementacion, pincharemos sobre User Constrains y Floorplan IO Pre.-synthesis


En caso de que no nos salieran todos los pines, eliminamos el fichero y desde Edit >Preferences elegimos en el apartado de editor.Floorplan .

Ahora realizaremos la simulación . Para ello generamos el fichero Test Bench, asociado al fichero fuente.


Y hacemos la grafica dando valores a las entradas en la UUT.

Guardamos y cerramos. Volvemos a nuestro entorno de trabajo anterior pinchando en SOurces.
 Lo primero será observar en la ventana de Waves, que las lineas salen de color verde, si saliesen rojas, seria sintoma de error.
Si pulsamos sobre la lupa negra encontraremos la simulacion.
En la siguiente tabla podemos observar el valor de las entradas y de las salidas, y asi comprar el funcionamiento del circuito.


Ahora haremos el resto de las Opciones de implementación que saldrán en naranja si tienen algún error como en la imagen de arriba o en verde si esta todo correcto

Como vemos, tenemos un report en el que nos indica las especificaciones de nuestro trabajo. Y podemos observar también que esta todo en verde, por lo que podemos decir, que está finalizado.