Vamos a crear una máquina de estado Moore que nos represente el detector de la siguiente secuencia de pulsos: 1011.
Esquema:
Creación de un nuevo proyecto:
Creamos un nuevo proyecto y seleccionamos esquemático.Seleccionamos las características de nuestro CPLD:
-Seleccionamos la familia del CPLD, XC9500 CPLDs.
-El modelo, XC9572.
-El encapsulado, PC84.
-La velocidad de trabajo del CPLD, -7.
-El sintetizador.
-El simulador.
-El lenguaje de programación, VHDL.
En la siguiente ventana añadimos el fichero fuente.
Seleccionamos schematic y damos nombre al archivo.
Aceptamos todos los apartados siguientes y se nos crea el proyecto.
Aceptamos todos los apartados siguientes y se nos crea el proyecto.
Creación del componente:
Añadimos un fichero fuente State Diagram donde crearemos la máquina de estados:
Se nos abrirá un subprograma llamado StateCAD donde creamos la máquina de estados.
En Options/ Variables añadimos los puertos de entrada y salida:
- Escribimos el nombre.
- Seleccionamos el tipo: reloj, entrada o salida; la salida puede ser asíncrona (OUT:COM) o en nuestro caso síncrona (OUT:REG).
- Modo activo.
- Si va a ser un pin o un nodo.
Añadimos los estados con la herramienta Add State:
Añadimos las transiciones con la herramienta Add Transition, hay que tener en cuenta que cada transición lleva cuatro puntos para poder hacer las líneas curvas.
Añadimos el reset con la herramienta Add Reset:
Como nuestra máquina de estados es Moore, las salidas hay que ponerlas dentro de los estados y las entradas en las transiciones.
Hacemos doble clic sobre el estado y le damos el valor a la salida.
Hacemos doble clic sobre el estado y le damos el valor a la salida.
Podemos ayudarnos del output wizard para definir la salida.
Hacemos doble clic sobre la transición y damos el valor correspondiente a la entrada.
Tras poner todas las condiciones este debería ser el aspecto final:
Simulación previa:
Podemos probar el funcionamiento de nuestra máquina de estados creando un test bench.
Podemos probar el funcionamiento de nuestra máquina de estados creando un test bench.
Se nos abrirá el simulador de estado, podemos ir simulando estado a estado cambiando las entradas con doble clic y generando un pulso. Se nos ira poniendo en amarillo por el estado o transición que vallamos, y en verde por la que hayamos pasado.
Creación del esquema:
Generamos el código VHDL de la máquina en Generate HDL. Nos aparecerá una ventana donde nos dice que el código se ha generado con éxito.
Añadimos el documento creado a nuestro esquemático. En la ventana processes generamos el símbolo del decodificador para poder utilizarlo en el esquema principal del diseño. En la ventana Sources nos aparecerá la ruta del componente creado para poder utilizarle.
Colocamos el símbolo creado con sus buffers de reloj y de reset. Colocamos las etiquetas.
Síntesis:
Hacemos la síntesis del esquema.
En View Technology Schematic podemos observar como sería nuestra máquina de estados creada con puertas lógicas:
Asignación de los pines:
Añadimos un nuevo archivo al proyecto de tipo: Implementation Constraints File.
Hacemos doble clic al documento creado y se nos abrirá el PACE donde definimos los pines.
Translate y documentación:
Generamos el archivo Fit y comprobamos que todo esté bien.
En la ventana Sources elegimos simulación post-fit y añadimos un test bench waveform.
Elegimos la configuración del tiempo:
- Podemos elegir el tiempo que va a estar el reloj en 0 (clock low time) y en 1 (clock high time), en mi caso 100ns, con lo que tendremos un periodo de 200ns y un ciclo de trabajo del 50%.
- Podemos modificar el Offset (bloqueo de las entradas en el instante inicial).
- Por último modificamos el tiempo que va a durar la simulación (Initial Lenght of Test Bench).
- Podemos elegir el tiempo que va a estar el reloj en 0 (clock low time) y en 1 (clock high time), en mi caso 100ns, con lo que tendremos un periodo de 200ns y un ciclo de trabajo del 50%.
- Podemos modificar el Offset (bloqueo de las entradas en el instante inicial).
- Por último modificamos el tiempo que va a durar la simulación (Initial Lenght of Test Bench).
Nos aparecerá la ventana de simulación donde podemos dar valores a las entradas haciendo clic sobre la línea de la entrada. Podemos observar que no nos deja hacer cambios los primeros 100ns por la configuración del Offset.
En la ventana processes hacemos doble clic sobre Simulate Post-Fit Model y comprobamos la simulación:
Una observación que podemos ver es el tiempo que tarda en responder la salida tras el estímulo del reloj, en mi caso 4.5 nS. Este tiempo viene dado dependiendo de los productos término utilizados dentro de la macrocélula.
Una observación que podemos ver es el tiempo que tarda en responder la salida tras el estímulo del reloj, en mi caso 4.5 nS. Este tiempo viene dado dependiendo de los productos término utilizados dentro de la macrocélula.
Programación:
Por último generamos el archivo de programación .JED que le abriremos con el programa IMPACT.
Hacemos doble clic sobre Generate Programming File.
Abrimos el IMPACT, creamos un nuevo proyecto, escribimos el nombre y la dirección de la ruta:
Seleccionamos el modo de trabajo del JTAG, lo dejamos por defecto:
Añadimos el documento de programación .JED en Add Device:
No hay comentarios:
Publicar un comentario